我是SQL的新手。
我们每天和每小时都有一个带时间戳的累积计数数据 保持问题仅限于每日数据。
示例数据:
2008-01-01 123
2008-01-02 135
2008-01-03 150
2008-01-04 160
2008-01-05 170
需要输出数据
Year Month CountOnDate1 CountOnDate2 CountOnDate3 CountOnDate4 CountOnDate5 ..so on
2008 JAN 0 12 15 10 10
在MSSQL Server2008R2上是否有一种高效,直接的方法。 到目前为止,我尝试过的所有方法都太慢了。 我试过CTE,Pivoting。 不存在用于存储可以计算的数据的表的限制。 希望我听起来不太天真
寻找一些指导。 问候 阿贾伊
添加更多信息 我的问题是两步 1.计算连续两个日期的计数差异 2.并根据每月的日期将差异转换为列
步骤1:我有一个使用标量函数来获取下一条记录并创建差值的视图
View 1:
Sample Data:
Col1 Col2 Col3
2008-01-01 123 0
2008-01-02 135 12
2008-01-03 150 15
2008-01-04 160 10
2008-01-05 170 10
第2步: 从View 1
创建一个交叉表轴SELECT * FROM (SELECT MONth(Col1) AS MonthNumber, 'D' + CONVERT(nvarchar(5), DAY(Col1)) AS ConsumptionDay, Col3) AS Sample_Value, ltrim(CONVERT(nvarchar(3), Col1, 107)) AS ConsumptionMonth, ltrim('Y' + CONVERT(nvarchar(4), Col1, 120)) AS ConsumptionYear
FROM View 1) src
PIVOT (sum(Sample_Value) FOR ConsumptionDay IN ([D1], [D2], [D3], [D4], [D5], [D6], [D7], [D8], [D9], [D10], [D11], [D12],
[D13], [D14], [D15], [D16], [D17], [D18], [D19], [D20], [D21], [D22], [D23], [D24], [D25], [D26], [D27], [D28], [D29], [D30], [D31])) AS pvT
我确实相信,我做错了什么 希望有人能提供帮助 阿贾伊