IF,SQL查询中的UNION语句

时间:2012-09-15 21:53:40

标签: sql-server if-statement union

我必须使用X,Y,Z列的XY和XZ表。我可以像这样加入它们:

    SELECT XY.*,XZ.Z
    FROM XY
    INNER JOIN XZ
    ON XY.X = XZ.X

但是如果出现某种情况(例如X = 0)我不仅要从XZ表中获取数据,还要从具有X,Z列的另一个查询(函数,表)获取数据。我知道UNION,但我不知道在这种情况下如何使用它并编写IF语句。我的意思是这样的(请原谅我这个抽象语法我只想解释正确的问题):

    SELECT XY.*,XZ.Z
    FROM XY
    INNER JOIN IF(X = 0)XZ ELSE (XZ UNION SOME_TABLE)
    ON XY.X = XZ.X     

2 个答案:

答案 0 :(得分:2)

SELECT XY.*, AT.*, XZ.Z
FROM XY
INNER JOIN XZ
ON XY.X = XZ.X
LEFT JOIN another_table AT
ON AT.X = XY.X AND XY.X = 0

答案 1 :(得分:1)

对XZ和SOME_TABLE内的数据做了很多假设。

SELECT
    XY.*,
    CASE WHEN XZ.Z = 0 THEN ST.Z
         ELSE XZ.Z
    END
FROM XY INNER JOIN XZ ON ON XY.X = XZ.X
        LEFT OUTER JOIN SOME_TABLE ST ON XY.X = ST.X