`

交叉报表示例

SQL 
阅读更多
1、简单交叉报表示例:
DECLARE @t TABLE(Year int,Quarter int,Amount decimal(10,1))
INSERT @t SELECT 1990, 1, 1.1
UNION ALL SELECT 1990, 2, 1.2
UNION ALL SELECT 1990, 3, 1.3
UNION ALL SELECT 1990, 4, 1.4
UNION ALL SELECT 1991, 1, 2.1
UNION ALL SELECT 1991, 2, 2.2
UNION ALL SELECT 1991, 3, 2.3
UNION ALL SELECT 1991, 4, 2.4

--查询处理
SELECT Year,
Q1=SUM(CASE Quarter WHEN 1 THEN Amount END),
Q2=SUM(CASE Quarter WHEN 2 THEN Amount END),
Q3=SUM(CASE Quarter WHEN 3 THEN Amount END),
Q4=SUM(CASE Quarter WHEN 4 THEN Amount END)
FROM @t
GROUP BY Year

/*--结果
Year      Q1     Q2     Q3     Q4
--------- ------------------------------
1990      1.1    1.2    1.3    1.4
1991      2.1    2.2    2.3    2.4
--*/

2、动态交叉报表示例
CREATE TABLE tb(Year int,Quarter int,Quantity decimal(10,1),Price decimal(10,2))
INSERT tb SELECT 1990, 1, 1.1, 2.5
UNION ALL SELECT 1990, 1, 1.2, 3.0
UNION ALL SELECT 1990, 2, 1.2, 3.0
UNION ALL SELECT 1990, 1, 1.3, 3.5
UNION ALL SELECT 1990, 2, 1.4, 4.0
UNION ALL SELECT 1991, 1, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.2, 5.0
UNION ALL SELECT 1991, 1, 2.3, 5.5
UNION ALL SELECT 1991, 1, 2.4, 6.0

--查询处理
DECLARE @s nvarchar(4000)
--交叉报表处理代码头
SET @s='SELECT Year'
--生成列记录水平显示的处理代码拼接
SELECT @s=@s
+','+QUOTENAME(N'Q'+CAST(Quarter as varchar)+N'_Amount')
+N'=SUM(CASE Quarter WHEN '+CAST(Quarter as varchar)
+N' THEN Quantity END)'
+','+QUOTENAME(N'Q'+CAST(Quarter as varchar)+N'_Price')
+N'=CAST(AVG(CASE Quarter WHEN '+CAST(Quarter as varchar)
+N' THEN Price END)AS DECIMAL(10,2))'
+','+QUOTENAME(N'Q'+CAST(Quarter as varchar)+N'_Money')
+N'=CAST(SUM(CASE Quarter WHEN '+CAST(Quarter as varchar)
+N' THEN Quantity*Price END)AS DECIMAL(10,2))'
FROM tb
GROUP BY Quarter
--拼接交叉报表处理尾部,并且执行拼接后的动态SQL语句
EXEC(@s+N'
FROM tb
GROUP BY Year')
/*--结果
Year  Q1_Amount  Q1_Price   Q1_Money  Q2_Amount  Q2_Price  Q2_Money
------- ----------------- --------------- ----------------- ----------------- -------------- ----------------
1990  3.6         3.00       10.90       2.6          3.50      9.20
1991  6.8         5.33       36.50       4.3          4.75      20.45
--*/
分享到:
评论

相关推荐

    RDLC交叉报表示例

    RDLC交叉报表示例RDLC交叉报表示例RDLC交叉报表示例RDLC交叉报表示例RDLC交叉报表示例

    提取动态交叉报表示例

    抛砖引玉吧,powerbuilder代码,提取动态交叉报表动态标题名和动态列

    SpingMVC IReport多数据源交叉报表示例

    有必要先阅读我先前发布的《SpringMVC与iReport(JasperReports) 5.6整合开发实例》这篇博文,只有熟悉了SpringMVC与iReport的整合基础之后,才能更容易上手本示例教程,因为本示例的重点在于iReport报表模板的设计。

    SQL SERVER交叉查询示例(动态列标题)

    SQL SERVER 2000不支持TRANSFORM...PIVOT语句,所以在MDB中的交叉查询语句拷到ADP中是无法运行的,在SQL SERVER的联机帮助中有如何设计交叉报表的示例,但它生成的列标题是固定的。 <P><P>本示例演示了如何生成动态列...

    VisualStudio自带报表RDLC(GotReportViewer的实例)

    很多人都不知道VS自带了报表工具,普通功能基本上都能满足,该压缩文件中是RDLC的相关示例,其中【RDLC-MailLabel(多列报表).rar】为多行多列交叉报表示例,很实用。

    xsl-fo交叉报表月份供应商纬度

    xsl-fo实现交叉报表,下面又是树型纬度,以po做示例。

    fastreport快速报表系统4用户使用手册

    ”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表...

    Fastreport手册

    交叉报表 40 动态报表 41 bands分隔 42 分栏报表 43 带封面的报表 43 嵌套报表(子报表) 43 主-从-从报表 44 复合报表 44 包含BLOB字段报表 44 没有band的报表 44 分组报表 44 图表报表 45 设计器 46 设计器 47 ...

    经典SQL脚本大全

    │ │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql │ │ 6.3.3 行值动态变化的交叉报表处理示例.sql │ │ 6.3.4 化解字符串不能超过8000的方法.sql │ │ 6.3.5 特殊的交叉报表处理示例.sql │ │ 6.4.1 ...

    Sqlserver2000经典脚本

    │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql │ │ 6.3.3 行值动态变化的交叉报表处理示例.sql │ │ 6.3.4 化解字符串不能超过8000的方法.sql │ │ 6.3.5 特殊的交叉报表处理示例.sql...

    多数据源 Reporting Server 报表制作

    多个不同的数据源在一个报表里呈现,示例里面包括交叉表,图表

    fastreport4教程

    ”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表...

    C#示例(配套光盘源码)第一部分

    实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL...

    fastreport4 实例中文教程

    ”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表...

    明日科技《C#示例源代码》(13-16)

    实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作...

    明日科技《C#示例源代码》(5-8)

    实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作...

    明日科技《C#示例源代码》(9-12)

    实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作...

    明日科技《C#示例源代码》(17-20)

    实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作...

    EXCEL培训之示例

    1.00 任督二脉:数据清单表与报表 1.01 技法管窥:有效性下拉框及二级有效性 1.02 技法管窥:连体数据的快速分开与合成 1.03 技法管窥:定位空值与Ctrl+Enter实现批量补充空白区域 2.01 函数灵魂:单元格地址引用4种...

    ACReport中国式报表控件2011(Ver 2.50)

    6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器...

Global site tag (gtag.js) - Google Analytics