当前位置: 首页 > news >正文

外贸接单网站建设玩外汇平台网站

外贸接单网站,建设玩外汇平台网站,公司网站域名实名认证怎么做,成都网站登记备案查询在数据库操作中#xff0c;有些时候我们遇到需要实现“行转列”的需求#xff0c;例如一下的表为某店铺的一周收入情况表#xff1a; WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据#xff1a; INSERT INTO WEEK_INCOME SELECT 星期一,1000 UNION…在数据库操作中有些时候我们遇到需要实现“行转列”的需求例如一下的表为某店铺的一周收入情况表 WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据 INSERT INTO WEEK_INCOME SELECT 星期一,1000 UNION ALL SELECT 星期二,2000 UNION ALL SELECT 星期三,3000 UNION ALL SELECT 星期四,4000 UNION ALL SELECT 星期五,5000 UNION ALL SELECT 星期六,6000 UNION ALL SELECT 星期日,7000   一般我们最经常使用的查询是查询一周中每天或某几天的收入例如查询周一至周日全部的收入 SELECT WEEK,INCOME FROM WEEK_INCOME 得到如下的查询结果集 WEEK           INCOME 星期一           1000 星期二           2000 星期三           3000 星期四           4000 星期五           5000 星期六           6000 星期日           7000   但是在一些情况下往往是某些报表中我们希望在一行中显示周一至周日的收入这时候查询结果集应该是这样的 星期一   星期二   星期三   星期四   星期五   星期六   星期日 1000     2000     3000     4000     5000     6000     7000 这种情况下SQL查询语句可以这样写 SELECT SUM(CASE WEEK WHEN 星期一 THEN INCOME END) AS [星期一], SUM(CASE WEEK WHEN 星期二 THEN INCOME END) AS [星期二], SUM(CASE WEEK WHEN 星期三 THEN INCOME END) AS [星期三], SUM(CASE WEEK WHEN 星期四 THEN INCOME END) AS [星期四], SUM(CASE WEEK WHEN 星期五 THEN INCOME END) AS [星期五], SUM(CASE WEEK WHEN 星期六 THEN INCOME END) AS [星期六], SUM(CASE WEEK WHEN 星期日 THEN INCOME END) AS [星期日] FROM WEEK_INCOME 但是在SQL SERVER 2005中提供了更为简便的方法这就是PIVOT关系运算符。相反的“列转行”是UNPIVOT以下是使用PIVOT实现“行转列”的SQL语句 SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日] FROM WEEK_INCOME PIVOT (SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]) )TBL     请参考MSDN中关于PIVOT的用法 http://technet.microsoft.com/zh-cn/library/ms177410(vsql.105).aspx   但是MSDN上的描述太过于规范严肃我看了半天还没弄清楚怎样使用PIVOT搞不清楚PIVOT里面的语法的含义。于是又google了很多资料以及通过上面提到的WEEK_INCOME表例子作了试验最终搞清楚了其用法。在网上有篇博文解释的很好T-SQL PIVOT語法剖析與實戰基本上我要写的就是参照该博文再加上自己一点个人理解。 要理解PIVOT语法就是要清楚微软为什么这样设计PIVOT但我相信是现实需求催生设计思路所以归根到底我们还是要弄清楚什么是“行转列” 正常情况下的查询结果是这样 星期一           1000星期二           2000星期三           3000星期四           4000星期五           5000星期六           6000星期日           7000 行转列后是这样 星期一   星期二   星期三   星期四   星期五   星期六   星期日1000    2000    3000    4000    5000    6000    7000 也就是说行转列后原来的某个列的值变做了列名在这里就是原来WEEK列的值“星期一”,星期二...星期日边做了列名而我们需要做的另一个工作就是计算这些列的值这里的“计算”其实就是PIVOT里面的聚合函数(sum,avg等) 现在结合注释来分析一下PIVOT语法(在这之前最好看看我上面提到博文T-SQL PIVOT語法剖析與實戰里面说到的PIVOT语法的三个步骤挺重要) SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]--这里是PIVOT第三步选择行转列后的结果集的列这里可以用“*”表示选择所有列也可以只选择某些列(也就是某些天) FROM WEEK_INCOME --这里是PIVOT第二步骤(准备原始的查询结果因为PIVOT是对一个原始的查询结果集进行转换操作所以先查询一个结果集出来)这里可以是一个select子查询但为子查询时候要指定别名否则语法错误 PIVOT (SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])--这里是PIVOT第一步骤也是核心的地方进行行转列操作。聚合函数SUM表示你需要怎样处理转换后的列的值是总和(sum)还是平均(avg)还是min,max等等。例如如果week_income表中有两条数据并且其week都是“星期一”其中一条的income是1000,另一条income是500那么在这里使用sum行转列后“星期一”这个列的值当然是1500了。后面的for [week] in([星期一],[星期二]...)中 for [week]就是说将week列的值分别转换成一个个列也就是“以值变列”。但是需要转换成列的值有可能有很多我们只想取其中几个值转换成列那么怎样取呢就是在in里面了比如我此刻只想看工作日的收入在in里面就只写“星期一”至“星期五”注意in里面是原来week列的值,以值变列。总的来说SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])这句的意思如果直译出来就是说将列[week]值为星期一,星期二,星期三,星期四,星期五,星期六,星期日分别转换成列这些列的值取income的总和。 )TBL--别名一定要写   以上是我对PIVOT的理解我尽所能表达出来。不过话说回来个人的理解的方式也不同就如我开始看了很多篇博文都没有搞清楚PIVOT用法。结果还是硬的通过例子和别人的博文再加上思考才弄懂了所以如果各位看了本篇之后仍不能理解那很正常配合例子再加上自己思考慢慢的定能理解。转载于:https://www.cnblogs.com/ajunForNet/p/4446662.html
http://www.pierceye.com/news/829061/

相关文章:

  • 网站建设是什么?南京文化云网站建设
  • 对比色网站设计wordpress 文件重命名
  • 企业免费网站建设模板怎么注册公司 需多少钱
  • 珠海网站建设厚瑜如何做推广网站
  • 山东省城乡建设部网站首页给了几张图让做网站
  • 吉林省建设标准化网站最新网球赛事新闻
  • eclipse tomcat 网站开发微信公众号手机怎么登录
  • 苏州市吴江区住房和城乡建设局网站网站建设需要具备什么条件
  • 用记事本做网站怎么添加表格媒体库wordpress
  • 河北智能网站建设网站建设 书
  • 个人网站模板怎么做网站开发接私活的经理
  • 律师事务所手机网站网站开发过程模型
  • 建筑培训网站系统开发包括什么
  • 出售家教网站模板广告设计公司管理
  • 松原网站推广wordpress主题更新了
  • wordpress 手机端模板百度seo标题优化软件
  • 货架网站开发特卖网站设计
  • 网站首页设计图片简约简单的明星个人网站建设论文
  • 织梦程序来搭建网站vip视频解析网站建设
  • 网站的管理上海创新网站建设
  • 企业对比网站西安做网站公司怎么样
  • 网站开发好做还是平面好做商务网页设计与制作是什么
  • 个人业务网站带后台凡科网站建设分类模块怎么弄
  • 在百度做网站需要什么资料appstore正版下载
  • wordpress怎么做404页面合肥seo软件
  • 建设网站挂广告赚钱免费个人网站源码
  • 网站ico图标动漫设计学什么内容
  • fireworks做网站定制做网站费用
  • 建设门户网站所需优秀营销网站设计
  • 行业网站建设教程办一家建筑公司流程