在SQL oracle SELECT查询中用空值或空值替换非空值

时间:2015-01-02 05:40:20

标签: sql oracle

我基本上是在尝试编写一个查询,如果事件在过去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

1 个答案:

答案 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