我在做一个PIVOT命令。我的行标签是日期字段。我的列是[NY],[TX]等位置。源数据中的某些值为空,但是一旦它被旋转,我想用日期顺序中的最后一个已知值“填充”这些空值。旋转时填充值“向下”
这就是如果列NY的值为2010年1月1日,但为2010年1月1日为空我想填写从2010年1月1日到2010年1月2日的值,以及任何其他空值日期如下,直到另一个值已经存在。所以基本上我用填充每个列的数据的关闭日期的相同数据来填补空缺。
我的枢查询我公司目前拥有的一个例子是:
SELECT ReadingDate, [NY],[TX],[WI]
FROM
(SELECT NAME As 'NodeName',
CAST(FORMAT(readingdate, 'M/d/yyyy') as Date) As 'ReadingDate',
SUM(myvalue) As 'Value'
FROM MyTable) as SourceData
PIVOT (SUM(Value) FOR NodeName IN ([NY],[TX],[WI])) as PivotTable
Order BY ReadingDate
但我不知道如何做到这一点“补降”,以填补空值
示例源数据
1/1/2010, TX, 1
1/1/2010, NY, 5
1/2/2010, NY null
1/1/2010, WI, 3
1/3/2010, WI, 7
...
请注意,如果1/3没有WI,那么1/2或NY会导致数据透视结果为空。还有一个空记录也导致null。对于纽约一旦枢轴1/2需要填写5,因为它是最后一个已知的价值,但1/3也需要归档与5一旦旋转,因为该记录甚至不存在,但当旋转它会显示作为空值,因为它不存在,但另一个位置有记录。
您可以为MyTable的基本架构? –
NAME是varchar,readingdate是varchar,myvalue是数字 – user441521
您使用的是哪个版本的SQL Server?而且,你能提供一个源数据的例子吗? –