根据其他表中的条件创建标志

时间:2018-08-08 04:56:17

标签: sql sql-server tsql

我正在创建一个Yes / No标志。我有一张订单号表和其他带有关联队列代码的订单号表。我需要检查订单是否已从某些队列代码传递过来。我已经尝试过此代码,但无法正常工作。

SELECT  Order,WI,Status,IF (QUEUE_CODE in ('AXYZ'),"Yes","No") AS FLAG
FROM Table1,Table2 
WHERE Table1.WI=Table2.WI

表1-

 Order          WI            Status
161100971/1 W578541-27NOV17 Completed
171203176   N/A             Completed
110403010/3 W874906-28DEC17 Completed

表2-

QUEUE_CODE          WI
AXYZ           W578541-27NOV17
ABCD           W578541-27NOV17
ABCD           W874906-28DEC17
CDEF           W874906-28DEC17

结果必须为-

Order           WI              Status      Flag
161100971/1     W578541-27NOV17 Completed   Yes
171203176       N/A             Completed   No
110403010/3     W874906-28DEC17 Completed   No

3 个答案:

答案 0 :(得分:3)

对于SQL Server 2012+,您可以使用IIF,否则,请使用CASE WHEN。请在连接表时使用以下语法:

SELECT Order,T1.WI,Status, IIF (QUEUE_CODE in ('AXYZ'), 'Yes','No') AS FLAG
FROM Table1 T1
INNER JOIN Table2 T2
    ON T1.WI=T2.WI;

当连接了许多对象时,您的语法已过时且难以阅读。

答案 1 :(得分:2)

请尝试以下查询:您需要在CASE WHEN时替换IF

SELECT  Order,WI,Status,case when QUEUE_CODE in ('AXYZ') then 'Yes' else 'No' end AS FLAG
FROM Table1 inner join Table2 
on Table1.WI=Table2.WI

答案 2 :(得分:1)

Try using table prefixes 
SELECT  Table1.Order,Table1.WI,Table1.Status,IF (Table2.QUEUE_CODE in ('AXYZ'),"Yes","No") AS FLAG
FROM Table1,Table2 
WHERE Table1.WI=Table2.WI