我有以下查询:
SELECT * FROM
(
SELECT unix_timestamp, input_raw, tag_id
from [200030].[dbo].inputs
WHERE inputs.date_time > dateadd(day,-1,getdate())
AND
(tag_id = 92164 or tag_id = 92149)
) src
pivot
(
max(input_raw)
FOR tag_id IN ([92164], [92149])
) piv
ORDER by unix_timestamp DESC
这很棒而且很有效。它给了我结果:
但是,我希望查询为我再做一件事。
每当有“NULL”结果时,我希望查询用列中最后一个“非NULL”值替换“NULL”。
例如,在列“92164”中看到的第一个 NULL 将被替换为“211”。
此外,可能会有几个 'NULL' 的 ia 行,因此查询需要继续向上列,直到找到一个无 NULL。
我已经能够用 php 完成这个任务。将结果放入二维关联数组并运行一个查找空值的函数,然后循环查找最后一个非空值,但如果可能的话,我真的想在 SQL 中完成这一切。我宁愿使用
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
//code
}
方法比分配几个数组。
有什么帮助吗?
谢谢
//编辑
忘了补充一点,这仅适用于空值上方有任何非空值的情况。例如,如果第一行为 NULL,则可以接受。