尋找最後的「非空」值我有以下查詢:在樞軸查詢
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'行,所以查詢需要繼續上行直到找到一個NULL NULL。
我已經能夠完成這與PHP。將結果放入一個2D關聯數組並運行一個查找空值的函數,然後循環查找最後一個非NULL值,但如果可能的話,我真的想在SQL中完成這一切。我寧願使用
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
//code
}
方法比分配幾個數組。
任何幫助?
謝謝
//編輯
忘了補充,這僅適用,如果有任何非空值以上的空值。例如,如果第一行是NULL,則可以接受。
幫助我理解,如果列92164是第3行是零,你會希望它顯示207?你想第5行的列92164顯示211? – supergrady 2013-02-26 18:25:31
@supergrady你正在理解這個問題......如果第1-4行全爲空,那麼他們和第5行將保持爲空,第7行將是211. – 2013-02-26 18:33:03
@ Love2瞭解你是正確的 – Mildfire 2013-02-26 19:27:43