我在单个表中有包含开始日期和结束日期的记录。
我需要调整它,以便我在 X 上有几年,在 Y 上有几个月......
1 2 3 4 5 6 7 8 9 10 11 12
2000 123 123 123 123 123 123 123 123 123 123 123 123
2001 123 123 123 123 123 123 123 123 123 123 123 123
2002 123 123 123 123 123 123 123 123 123 123 123 123
2003 123 123 123 123 123 123 123 123 123 123 123 123
...考虑到在矩阵中的位置(年/月)中月/日落在记录的开始/结束日期内,可能被视为“活跃”的项目计数。
我已经为另一项任务管理了基于单个日期的 PIVOT,但这本质上是日期范围内的 PIVOT,包括开始/结束日期之间的每个日期!
T-SQL 中有什么我不知道的东西可以实现这一点吗?
最佳答案
使用经典 PUBS 数据库中的销售表,您可以获得按年、按月的订单数量,并提供以下信息:也许您可以从那里得出您要查找的内容。
select y, [1] as January,
[2] as February,
[3] as March,
[4] as April,
[5] as May,
[6] as June,
[7] as July,
[8] as August,
[9] as September,
[10] as October,
[11] as November,
[12] as December
from (select ord_num,
DATEPART(year,ord_date)as y,
DATEPART(month, ord_date) as m from sales) as p
pivot (count(ord_num) for m in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) as pvt
order by pvt.y
https://stackoverflow.com/questions/8976136/