从用于创建2个先前计算列的表达式创建计算列

时间:2012-05-28 14:47:00

标签: sql sql-server database calculated-columns

解决了我的问题......看到第二部分代码

这是我的sql语句,用于比较来自不同表的2行序列号。如果有匹配则显示yes,但如果没有匹配则显示no 在不同的表格中,由于两种不同的原因,这样做了两次

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

我想要做的是创建另一个列,如果第一列或第二列为是,则在行中放置yes,否则它将显示no。我意识到你不能压缩计算列,所以我想要做的是重复表达式并有一个或没有运气的声明。我不是很有经验写任何其他基本的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

1 个答案:

答案 0 :(得分:0)

  • table3.serial2 OR table2.serial1 IS NULL不是您正在寻找的条件。您需要table3.serial2 IS NULL OR table2.serial1 IS NULL
  • 您尝试使用相同的别名[computedCol2]返回两个不同的值。