Ich habe die folgende Abfrage:Finding letzten "Nicht-Null" Wert in einer Pivot-Abfrage
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
, die großen und Arbeiten ist. Es gibt mir die Ergebnisse:
Allerdings würde ich die Frage wie für mich noch etwas zu tun.
Immer wenn ein 'NULL' Ergebnis vorhanden ist, möchte ich, dass die Abfrage die 'NULL' durch den letzten 'Nicht-NULL' Wert in der Spalte ersetzt.
Zum Beispiel würde der erste NULL in Spalte '92164' durch '211' ersetzt werden.
Es ist auch möglich, dass es mehrere "NULL's i eine Zeile gibt, so dass die Abfrage weiter die Spalte hochgehen müsste, bis es eine keine NULL findet.
Ich konnte dies mit php erreichen. Wenn Sie die Ergebnisse in ein assoziatives 2D-Array einfügen und eine Funktion ausführen, die Nullen findet, durchläuft sie die Schleife, um das letzte nicht-NULL zu finden, aber ich möchte das alles möglichst in SQL machen. Ich würde viel lieber die Methode verwenden, als mehrere Arrays zuzuordnen.
Irgendwelche Hilfe?
Danke
// EDIT
nur hinzuzufügen vergessen, dass dies gilt auch, wenn es nicht-NULL-Werte über dem Nullwert ist. Zum Beispiel ist es akzeptabel, wenn die erste Zeile NULL ist.
Hilf mir zu verstehen, wenn Spalte 92164 ist Zeile 3 waren null, würden Sie wollen, dass es 207 angezeigt werden? Und Sie wollen Spalte 92164 von Zeile 5 211 anzeigen lassen? – supergrady
@supergrady Sie verstehen die Frage richtig ... und wenn die Zeilen 1-4 alle Nullen wären, dann würden sie und Zeile 5 Null bleiben und Zeile 7 wäre 211. –
@ Love2Learn Sie sind richtig – Mildfire