簡體   English   中英

將每個日期的null替換為相同的值-Oracle SQL

[英]Replace null with same value per date - oracle sql

我正在嘗試通過在同一DATA日內為所有HOUR小時設置相同的值來更新VAL的查詢。 它必須以某種方式檢查同一日期的值,並用它替換空值,但是我似乎無法全力以赴。 在此先感謝您的幫助!

PROCESS    DATA     HOUR    VAL
-------- ---------- ----- -------
508410   2015.03.29  19   36.15
508410   2015.03.30  11   NULL
508410   2015.03.30  14   NULL
508410   2015.03.30  15   35.36
508410   2015.03.30  23   NULL
508410   2015.03.31  11   NULL
508410   2015.03.31  12   20.4
508410   2015.04.01  01   NULL
508410   2015.04.01  02   37.06

我希望它看起來像:

PROCESS    DATA     HOUR    VAL
-------- ---------- ----- -------
508410   2015.03.29  19   36.15
508410   2015.03.30  11   35.36
508410   2015.03.30  14   35.36
508410   2015.03.30  15   35.36
508410   2015.03.30  23   35.36
508410   2015.03.31  11   20.4
508410   2015.03.31  12   20.4
508410   2015.04.01  01   37.06
508410   2015.04.01  02   37.06

一種方法是在set子句中進行內聯查詢。 您可以利用max忽略null的事實,並使用它返回每個data唯一的非null val

UPDATE mytable a
SET    a.val = (SELECT MAX(val)
                FROM   mytable b
                WHERE  b.data = a.data)
WHERE  a.val IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM