2016-08-05 14 views
0

以下のコードで何が問題なのか教えていただけますか?SQLの構文がありません

IF (SELECT T0.U_DestType FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6') 

BEGIN 
SELECT 'SHOW_ERROR' FOR BROWSE 
END 

それはエラーなしでコンパイルが、期待される結果

多くのおかげで(U_DestTypeは1,2または6以外のときSHOW_ERRORを宣言)を与えるものではありません。

答えて

1

また、どうもありがとうございました、素晴らしいことだこのよう

IF ((SELECT count(T0.U_DestType) FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6'))==0) 

BEGIN 
SELECT 'SHOW_ERROR' FOR BROWSE 
END 
+0

これは実際にはうまくいきます。ありがとうございました – coblenski

+0

@JohnCobby大歓迎 –

4

使用Exists

IF Exists 
(SELECT 1 FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4' and T0.U_DestType NOT IN ('1','2','6')) 
Begin 
--some quwery 
End 

あなたの参加が複数の値を返すことがありますし、あなたのクエリが失敗する可能性があります。

+1

を試してみてくださいカウント機能 を使用することができます。 – coblenski

+1

私はあなたがOPのロジックに '存在する 'と思っていますが、これは' count() 'を使うよりも良い解決策です。 –

+0

@ GordonLinoff:そうです、ありがとうございます – TheGameiswar

関連する問題