我基本上是在尝试编写一个查询,如果事件在过去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
答案 0 :(得分:2)
在CASE
-
Oracle
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