MSSQL Server 2008R2带时间戳的累积数据 - 间隔计算

时间:2013-12-12 10:36:26

标签: sql sql-server sql-server-2008

我是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

我确实相信,我做错了什么 希望有人能提供帮助 阿贾伊

0 个答案:

没有答案