在 SQL oracle SELECT 查询中用空值或空值替换非空值
Replace non-null values with blank or null values in SQL oracle SELECT query
我基本上是在尝试编写一个查询,如果事件发生在过去 200 天内,它将显示 A、B、C、D、E、F 的列值
但是在同一个查询中,如果在过去 200 天(201 天及以后)内没有发生事件,它将只显示 A 列和 B 列中的值。
我当前的查询尝试使用 UNION 语句执行两个 select 语句。我试图在 UNION 之后为 SELECT 的 C、D、E 和 F 列执行 CASE 语句,但我无法让它工作。
当前查询显示所有列的所有值,无论它是否发生 < 或 > 200 天。
SELECT te.columna,
c.columnb,
te.columnc,
v.columnd,
v.columne,
v.columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne
AND te.columnc > sysdate-200
UNION
SELECT te.columna,
c.columnb,
te.columnc,
v.columnd,
v.columne,
v.columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne
AND te.columnc < sysdate-200
在 Oracle
-
中尝试 CASE
SELECT te.columna,
c.columnb,
CASE WHEN te.columnc >= SYSDATE -200
THEN te.columnc
ELSE NULL
END columnc,
CASE WHEN te.columnc >= SYSDATE -200
THEN te.columnd
ELSE NULL
END columnd,
CASE WHEN te.columnc >= SYSDATE -200
THEN v.columne
ELSE NULL
END columne,
CASE WHEN te.columnc >= SYSDATE -200
THEN v.columnf
END columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne
我基本上是在尝试编写一个查询,如果事件发生在过去 200 天内,它将显示 A、B、C、D、E、F 的列值 但是在同一个查询中,如果在过去 200 天(201 天及以后)内没有发生事件,它将只显示 A 列和 B 列中的值。
我当前的查询尝试使用 UNION 语句执行两个 select 语句。我试图在 UNION 之后为 SELECT 的 C、D、E 和 F 列执行 CASE 语句,但我无法让它工作。
当前查询显示所有列的所有值,无论它是否发生 < 或 > 200 天。
SELECT te.columna,
c.columnb,
te.columnc,
v.columnd,
v.columne,
v.columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne
AND te.columnc > sysdate-200
UNION
SELECT te.columna,
c.columnb,
te.columnc,
v.columnd,
v.columne,
v.columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne
AND te.columnc < sysdate-200
在 Oracle
-
CASE
SELECT te.columna,
c.columnb,
CASE WHEN te.columnc >= SYSDATE -200
THEN te.columnc
ELSE NULL
END columnc,
CASE WHEN te.columnc >= SYSDATE -200
THEN te.columnd
ELSE NULL
END columnd,
CASE WHEN te.columnc >= SYSDATE -200
THEN v.columne
ELSE NULL
END columne,
CASE WHEN te.columnc >= SYSDATE -200
THEN v.columnf
END columnf
FROM table1 te, table2 c, table3 v
WHERE te.columng_id=c.columng_id
AND v.columne=te.columne