1

これは私の単純化されたクエリです

SELECT FILTER_IS_LONGS FROM PO_OPEN_FINAL_REPORT 
WHERE FILTER_IS_LONGS in( CASE WHEN testVar = 1 then 'Y' else 'N','Y' END )

「キーワードがありません」というエラーが表示されます。

クエリは基本的に、testVar の値に応じて、IN('Y') または IN('N','Y') の IN() 句を生成する必要があります。

エスケープすることと関係があると思い'N','Y'ます。助けていただければ幸いです

4

2 に答える 2

1

アイデアを提供するためだけに、完全にテストされていません:

SELECT FILTER_IS_LONGS
FROM PO_OPEN_FINAL_REPORT 
WHERE (testVar=1 AND FILTER_IS_LONGS='Y')
OR (testVar<>1 AND FILTER_IS_LONGS IN ('N','Y'))

おそらく次と同じです:

SELECT FILTER_IS_LONGS
FROM PO_OPEN_FINAL_REPORT 
WHERE FILTER_IS_LONGS='Y'
OR (testVar<>1 AND FILTER_IS_LONGS='N')
于 2013-11-13T16:00:33.613 に答える
1

どうですか

SELECT FILTER_IS_LONGS FROM PO_OPEN_FINAL_REPORT 
WHERE 
(case 
when testvar=1 and FILTER_IS_LONGS in ('Y') then 1 
when testvar<>1 and FILTER_IS_LONGS in ('Y','N') then 1 
else 0) = 1
于 2013-11-13T15:54:19.650 に答える