【发布时间】:2021-12-12 14:38:51
【问题描述】:
我知道这是一个非常愚蠢的问题,但我真的无法理解数据透视表的逻辑。
我有这个 SQL 代码
SELECT AddressBase.RegionName,
ObjectBase.ObjectID,
YEAR(ObjectBase.CreatedOn) AS Year
FROM ObjectBase INNER JOIN
AddressBase ON AddressBase.ObjectID = ObjectBase.ObjectID AND
AddressBase.DeleteStateCode = 0 AND
ObjectBase.DeleteStateCode = 0
有了这个
但我需要使用 pivot 来获得结果,
怎么做?
我尝试了类似的方法,但显然无法正常工作。
SELECT AddressBase.RegionName, [2011], [2012], [2013], [2014], [2015], [2016], [2017]
FROM
(
SELECT ObjectBase.ObjectID,
YEAR(ObjectBase.CreatedOn) yr,
AddressBase.RegionName
FROM ObjectBase INNER JOIN
AddressBase ON AddressBase.ObjectID = ObjectBase.ObjectID AND
AddressBase.DeleteStateCode = 0 AND
ObjectBase.DeleteStateCode = 0
) d
pivot
(
COUNT(ObjectBase.ObjectID)
for yr in ([2011], [2012], [2013], [2014], [2015], [2016], [2017])
) piv
1:
【问题讨论】:
-
您看过PIVOT 运算符吗?你不明白怎么办?虽然这看起来像一个动态支点:SQL Server dynamic PIVOT query? 老实说,这是针对您的表示/报告层的东西,而不是 RDBMS。如果您“必须”在 SQL 中执行此操作,我会强烈建议重新考虑您的要求。
-
您的尝试有什么问题?请提供样本数据和预期输出
标签: sql sql-server pivot