根据条件将列值显式设置为null

时间:2014-05-06 12:44:58

标签: sql oracle

我正在尝试编写一个查询,它将显示3列,如ID,类型和ReceTime。即使键入!= 1

,下面的查询也会显示ReceTime列值

如果类型值为1,我想以某种方式修改它,然后根据查询给出我的ReceTime值,否则将null值放入其中。 ReceTime值来自记录器表中的时间列。

请帮助

SELECT ID,
 type,
(SELECT (
CASE
  WHEN c.type=1
  AND c.ID   = a.ID
  THEN c.time
    --else null
END )
FROM logger c
WHERE c.type=1
AND c.ID    = a.ID
) AS ReceTime
FROM logger a;

2 个答案:

答案 0 :(得分:3)

我认为以下代码适合您,

Select ID,
     type, 
        CASE  WHEN a.type=1   THEN a.time ELSE NULL END as ReceTime
    from 
    logger a;

我不明白需要两次logger表。

答案 1 :(得分:0)

不确定,为什么使用子查询进行ctype:

SELECT ID,
 type,
CASE
 WHEN type=1
  THEN time
    else null
END as ReceTime
FROM logger