我正在创建一个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
答案 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