SQL Query根据列值有条件地获取列结果

时间:2015-01-28 05:25:33

标签: sql sql-server sql-server-2008-r2

下面是我的SQL表,

enter image description here

如何从此表中获取pack_cd的结果和非空的日期。 e.g。

enter image description here

从SQL表中我希望得到PACK_CD并将日期作为

  • ETDT如果是NOT NULL
  • PPDT如果ETDT IS NULLPPDTNOT NULL
  • PDT如果ETDT IS NULLPPDTNULLPDTNOT NULL

2 个答案:

答案 0 :(得分:4)

使用COALESCE

SELECT
    PACK_CD,
    DATE = COALESCE(ETDT, PPDT, PDT)
FROM [YourTable]

如果您只想显示包含NULL列的行,只需添加WHERE子句:

WHERE
    ETDT IS NULL
    OR PPDT IS NULL
    OR PDT IS NULL

答案 1 :(得分:0)

这是另一种了解的选择。你和@wewesthemenace建议的COALESCE一样。

SELECT
    PACK_CD,
    DATE = case when isnull(ETDT,'') != '' then ETDT 
                else 
                    case when isnull(PPDT,'') != '' then PPDT 
                    else
                        PDT
                    end
                end             
FROM [YourTable]