Tôi có truy vấn sau đây:Tìm ngoái "Non-Null" giá trị trong một truy vấn Pivot
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
đó là rất tốt và các công trình. Nó mang lại cho tôi kết quả:
Tuy nhiên, tôi muốn truy vấn để làm một điều nữa đối với tôi.
Bất cứ khi nào có kết quả 'NULL', tôi muốn truy vấn để thay thế 'NULL' bằng giá trị 'không NULL' cuối cùng trong cột.
Ví dụ: NULL đầu tiên được thấy trong cột '92164' sẽ được thay thế bằng '211'.
Ngoài ra, có thể sẽ có một số 'NULL của i một hàng, do đó truy vấn sẽ cần phải tiếp tục đi lên cột cho đến khi nó tìm thấy một NULL không.
Tôi đã có thể thực hiện việc này bằng php. Đưa các kết quả vào một mảng kết hợp 2D và chạy một hàm tìm các giá trị rỗng sau đó lặp lại để tìm giá trị NULL cuối cùng, nhưng tôi thực sự muốn thực hiện tất cả điều này trong SQL nếu có thể. Tôi muốn sử dụng phương pháp
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
//code
}
hơn là chỉ định một vài mảng.
Bất kỳ trợ giúp nào?
Cảm ơn bạn
// EDIT
Quên để thêm rằng điều này chỉ áp dụng nếu có bất kỳ phi null trên giá trị null. Ví dụ, nó là chấp nhận được nếu hàng đầu tiên là NULL.
Giúp tôi hiểu, nếu cột 92.164 là hàng 3 là null, bạn sẽ muốn nó hiển thị 207? Và bạn muốn cột 92164 của hàng 5 để hiển thị 211? – supergrady
@supergrady Bạn hiểu câu hỏi chính xác ... và nếu hàng 1-4 là tất cả Nulls thì họ và hàng 5 sẽ ở lại Null và hàng 7 sẽ là 211. –
@ Love2Tìm hiểu bạn là đúng – Mildfire