我正在使用SQL Server 2008 R2和T-SQL。这些是简短的例子。在T-SQL中创建复杂数据透视表
我的表/视图具有以下字段
Table/View
ReportID,
UnitName,
UnitID,
CaseDefinitionID,
CaseDefinition,
DateOfDelivery,
YEAR(DateOfDelivery) AS [Year],
MONTH(DateOfDelivery) AS [Month],
DATENAME(m,DateOfDelivery) AS [Month name]
和我的目标报告:
Unit | Case type 1| Case type 2| Case total|
Unit A | 36| 40| 76|
2013| 20| 18| 38|
Jan| 10|
Feb| 10|
2014| 16|
Mar| 8|
Dec| 8|
Unit B | 12|
2013| 12|
Jan| 6|
May| 6|
Grand total| 48|
月份行可以是空的,空的内容是罚款。该示例报告不完整,以帮助澄清。
迄今取得的进展是以下查询:
SELECT *
FROM
(
SELECT
PCT.[Year],
PCT.UnitName AS [Unit],
PCT.UnitID,
PCT.CaseDefinition AS [Case definition]
FROM
PivotBase AS PCT
) AS P1
PIVOT
(
COUNT(UnitID)
FOR [Case definition] IN ([Case type 1],[Case type 2])
) AS P2
这将产生如下表
Year|Unit |Case type 1|Case type 2|
2013|Unit A | 20 | 18|
2014|Unit A | 16 | 22|
2013|Unit B | 6 | 8|
2014|Unit B | 6 | 8|
没有必要对动态SQL
我读迄今已涵盖了许多选项但我仍然不知道下一步该去哪里。我如何制作所需的报告。
我想你应该刚刚输出的标准化形式,依靠Excel进行转动到达那里。你是否有理由在SQL中执行此操作? – 2014-10-06 20:38:40
@ZoffDino Excel不是一个可悲的选择;这是一个网站。我也可以用C#编写它,但又不是一个真正的选择。 – 2014-10-06 20:40:42