我试图提取一些可变销售中心的每个月的销售操作数量。 使用下面的TSQL ...动态数据转置
;WITH Months(m) AS
(
SELECT 1 m
UNION ALL
SELECT m+1 FROM Months WHERE m < 12
)
SELECT t.Center,m Month, t.Sales FROM Months
CROSS APPLY
(
SELECT C.Center, COUNT(1) Sales FROM Operations C
LEFT JOIN Centers A ON A.Code=C.Center
WHERE Date BETWEEN '01/'+ CONVERT(VARCHAR(2),Months.m) + '/2013' AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,'01/'+ CONVERT(VARCHAR(2),Months.m) + '/2013')+1,0))
GROUP BY C.Center
) t
,所以我得到了以下的输出:
Center Month Sales
-----------------------
A 1 20
B 1 30
A 2 25
B 2 30
....
而且我想使用的到底是什么:
Center 1 2 ...
----------------------
A 20 25 ...
B 30 30 ...
我学透视与xmlpath,但它是如此复杂,我不能使它的工作。任何人都有解决方案?
亲爱的Bluefeet,只需在我的查询结尾添加数据透视部分即可解决问题。我试图在数据透视句中不写月份数据,因为我看到我希望在将来使用参数获得学期或夸脱。如果您修改答案以纠正日期中的选择错误,我会将其标记为正确的答案。谢谢。 – Sergio
@Sergio这显示了如何动态获取列,我不确定你的意思_如果您修改答案以纠正dates_上的选择错误。什么错误? – Taryn
我只是表示您的选择不会为每个分隔的月份返回数据,而是针对一个范围。 – Sergio