每个日期用相同的值替换 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
的事实并将其用于 return 每个 data
:
唯一的非空 val
UPDATE mytable a
SET a.val = (SELECT MAX(val)
FROM mytable b
WHERE b.data = a.data)
WHERE a.val IS NULL
我正在尝试通过为同一 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
的事实并将其用于 return 每个 data
:
val
UPDATE mytable a
SET a.val = (SELECT MAX(val)
FROM mytable b
WHERE b.data = a.data)
WHERE a.val IS NULL