网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 数据库 > 正文

SQL交叉报表

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

我们将用下图研究报表:




1、简单报表操作:



上表经过下列运算后可产生:

  1. SELECT   
  2. [Year],   
  3. Q1=SUM(CASE WHEN [Quarter]=1 THEN Quantity END),   
  4. Q2=SUM(CASE WHEN [Quarter]=2 THEN Quantity END),   
  5. Q3=SUM(CASE WHEN [Quarter]=3 THEN Quantity END),   
  6. Q4=SUM(CASE WHEN [Quarter]=4 THEN Quantity END)   
  7. FROM tb GROUP BY [Year]   

补充:除了SUM外,也可以用其他常用聚合函数例如AVG、MIN、SUM、STDEV、COUNT、STDEVP、VAR、GROUPING 、VARP、MAX
再次补充:
STDEV 返回给定表达式中所有值的统计标准偏差。
STDEVP 返回给定表达式中所有值的填充统计标准偏差。
VAR 返回给定表达式中所有值的统计方差。
VARP 返回给定表达式中所有值的填充统计方差。
注意:以上聚合函数 都只能用于数字列
GROUPING 常和CUBE和ROLLUP结合使用 如果是附加列输出1否则输出0
2、涉及多列的交叉报表 

SQL语句:

  1. SELECT [Year],   
  2. Q1_Quantity=SUM(CASE WHEN [Quarter]=1 THEN Quantity END),   
  3. Q1_Price=CAST(AVG(CASE WHEN [Quarter]=1 THEN Quantity ENDAS DECIMAL(10,2)),   
  4. Q1_Money=SUM(CASE WHEN [Quarter]=1 THEN CAST(Quantity*Price AS DECIMAL(10,2)) END),   
  5. Q2_Quantity=SUM(CASE WHEN [Quarter]=2 THEN Quantity END),   
  6. Q2_Price=CAST(AVG(CASE WHEN [Quarter]=2 THEN Quantity ENDAS DECIMAL(10,2)),   
  7. Q2_Money=SUM(CASE WHEN [Quarter]=2 THEN CAST(Quantity*Price AS DECIMAL(10,2)) END),   
  8. Q3_Quantity=SUM(CASE WHEN [Quarter]=3 THEN Quantity END),   
  9. Q3_Price=CAST(AVG(CASE WHEN [Quarter]=3 THEN Quantity ENDAS DECIMAL(10,2)),   
  10. Q3_Money=SUM(CASE WHEN [Quarter]=3 THEN CAST(Quantity*Price AS DECIMAL(10,2)) END),   
  11. Q4_Quantity=SUM(CASE WHEN [Quarter]=4 THEN Quantity END),   
  12. Q4_Price=CAST(AVG(CASE WHEN [Quarter]=4 THEN Quantity ENDAS DECIMAL(10,2)),   
  13. Q4_Money=SUM(CASE WHEN [Quarter]=4 THEN CAST(Quantity*Price AS DECIMAL(10,2)) END)   
  14. FROM tb  GRO<span style="color: #ff0000">UP BY [Year]   
  15. </span>   

3、动态生成交叉报表的列:
这次生成的图表如上图 SQL可写作:

  1. DECLARE @S NVARCHAR(4000)    
  2. SET @S=''   
  3. SELECT  @S=@S+'   
  4. Q'+CAST([Quarter] AS NVARCHAR)+'_Quantity=SUM(CASE WHEN [Quarter]='+CAST([Quarter] AS NVARCHAR)+' THEN Quantity END),    
  5. Q'+CAST([Quarter] AS NVARCHAR)+'_Price=CAST(AVG(CASE WHEN [Quarter]='+ CAST([Quarter] AS NVARCHAR) +' THEN Quantity ENDAS DECIMAL(10,2)),   
  6. Q'+CAST([Quarter] AS NVARCHAR)+'_Money=SUM(CASE WHEN [Quarter]='+ CAST([Quarter] AS NVARCHAR) +' THEN CAST(Quantity*Price AS DECIMAL(10,2)) END),' FROM tb  GROUP BY [Quarter]    
  7. SET  @S='SELECT [Year],'SUBSTRING(@S,1,LEN(@S)-1)+' FROM tb GROUP BY [Year]'   
  8. EXEC(@S)   
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师