2010-01-05 12 views
6

इम मामले उपयोग करने के लिए एक जहां खंड में जाँच मूल्य im भिन्न करने की कोशिश कर रहा है, लेकिन मैं त्रुटि हो रही है:जहां क्लॉज में टी-एसक्यूएल में सीएएसई का उपयोग कर?

कीवर्ड 'मामला'

एसक्यूएल सर्वर 2005

select * 
from table 
where ((CASE when adsl_order_id like '95037%' 
     then select '000000'+substring(adsl_order_id,6,6) 
     ELSE select adsl_order_id 
     END) 
     not in (select mwebID from tmp_csv_dawis_bruger0105) 

उत्तर

4
के पास गलत वाक्यविन्यास

आप

SELECT * 
FROM table 
WHERE (SELECT CASE WHEN adsl_order_id LIKE '95037%' 
       THEN '000000' + SUBSTRING(adsl_order_id, 6, 6) 
       ELSE adsl_order_id 
       END) 
     NOT IN (select mwebID from tmp_csv_dawis_bruger0105) 
23

यहाँ की कोशिश कर सकते एक कहाँ खंड में एक मामला बयान शामिल करने के लिए एक ही रास्ता है:

SELECT * FROM sometable 
WHERE 1 = CASE WHEN somecondition THEN 1 
    WHEN someothercondition THEN 2 
    ELSE ... END 
1

एक सहसंबद्ध सबक्वेरी एक संभावना है:

select * 
from mytable 
where not exists (
    select * 
    from 
     tmp_csv_dawis_bruger0105 
    where 
     mwebID = 
     CASE when mytable.adsl_order_id like '95037%' then '000000' + substring(mytable.adsl_order_id,6,6) 
     ELSE mytable.adsl_order_id END 
) 
-1

आप मामले अभिव्यक्ति से पहले एक भी कई खोलने कोष्ठकों की है।

0

इसके अलावा SELECT खंड में यह रखो ...

select *, (CASE when adsl_order_id like '95037%' 
     then '000000'+substring(adsl_order_id,6,6) 
     ELSE adsl_order_id 
     END) AS Id 
from table 
where not in (select mwebID from tmp_csv_dawis_bruger0105) 

, आप "चुनें" के मामले का नतीजा जरूरत नहीं है।

संबंधित मुद्दे