0

解决了我的问题...查看第二段代码

这是我的 sql 语句,它比较来自不同表的 2 行序列号。如果匹配,则显示是,但如果不匹配,则显示否 这在不同的桌子上出于 2 个不同的原因执行了两次

SELECT  table1.serial1, table1.serial2,
        CASE WHEN table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol1],
        CASE WHEN table3.serial2 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2]
FROM    table1
        LEFT JOIN table2
            ON table2.serial1 = table1.serial1
        LEFT JOIN dbo.EPG
            ON table3.serial2 = table1.serial2

然后我想做的是创建另一列,如果第一列或第二列是“是”,则在该行中放置“是”,否则它将显示“否”。我意识到你不能计算计算列,所以我想做的是重复表达式并有一个 or 语句没有运气。除了基本的 sql 之外,我在编写任何东西方面都不是很有经验……这是 mty 的尝试:

SELECT  DISTINCT table1.serial1, table1.serial2,
        CASE WHEN table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol1],
        CASE WHEN table3.serial2 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2],
        CASE WHEN table3.serial2 IS NULL OR table2.serial1 IS NULL THEN 'No' ELSE 'Yes' END AS [computedCol2]
FROM    table1
        LEFT JOIN table2
            ON table2.serial1 = table1.serial1
        LEFT JOIN dbo.EPG
            table3.serial2 = table1.serial2
4

1 回答 1

0
  • table3.serial2 OR table2.serial1 IS NULL不是您正在寻找的条件。你需要table3.serial2 IS NULL OR table2.serial1 IS NULL.
  • 您正在尝试使用相同的别名返回两个不同的值,[computedCol2].
于 2012-05-28T14:50:53.133 回答