根据条件从表中获取信息

时间:2015-05-28 18:01:19

标签: sql sql-server-2008-r2

我在尝试找出一种基于某些条件从表中获取信息的方法时遇到了一些麻烦。

我想做的事情:如果CATEGORY列在A,B,C或D中,我希望从DATEX列中获取日期。如果类别在E,F中,我想从DATEY列中获取日期:

SELECT
    COLUMNX
FROM
    TABLE A
WHERE
    A.CONDITION1 = A.CONDITION2 AND
    (CASE
    WHEN A.CATEGORY IN ('A', 'B', 'C', 'D') THEN
        A.DATEX = (SELECT ...)
    WHEN A.CATEGORY IN ('E', 'F') THEN
        A.DATEY = (SELECT ...)
    END)

但这不起作用,我收到sintax错误。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

您可以Case逻辑模拟AND/OR子句中的IF-Else,而不是Where语句。试试这个。

SELECT COLUMNX
FROM   TABLE A
WHERE  A.CONDITION1 = A.CONDITION2
       AND ( A.CATEGORY IN ( 'A', 'B', 'C', 'D' )
             AND A.DATEX = (SELECT ..) )
        OR ( A.CATEGORY IN ( 'E', 'F' )
             AND A.DATEY = (SELECT 1..) )