2015-04-17 3 views
0

Может кто-нибудь объяснить, как передать несколько значений сазе оракула Тогданесколько значений в случае заявления оракула затем

SELECT * 
FROM impl_debitor_information 
WHERE soft_delete='F' 
AND SHOP_ID ='4987bc1b-c0a8-6cb7-12f4-0243011f7099' 
AND (debitor_type IS NULL 
    OR debitor_type IN (CASE 
          WHEN (SELECT techfund_debitor_enabled 
           FROM impl_shop 
           WHERE shop_id='4987bc1b-c0a8-6cb7-12f4-0243011f7099') = 'YES' THEN ('T','D')       
          ELSE 'D' 
         END)) 

Если значения из выберите techfund_debitor_enabled из impl_shop где shop_id = '4987bc1b-c0a8-6cb7- 12f4-0243011f7099' является „ДА“, то мне нужно пройти 2 значения в пункте, если не одно значение enter image description here

заранее спасибо

+0

CASE может возвращать только скаляр, а не IN LIST. Я бы рекомендовал переписать это как СОЮЗ, чтобы обработать два случая, которые у вас есть. –

+0

Привет @WW спасибо за предложение, может у просьба дать еще несколько подсказок? –

ответ

1

СЛУЧАЙ будет возвращать только один стоимость. Вы должны переписать свой запрос. Что-то вроде этого:

SELECT * 
FROM impl_debitor_information i, impl_shop where shop_id s 
WHERE d.soft_delete='F' 
AND d.shop_id ='4987bc1b-c0a8-6cb7-12f4-0243011f7099' 
AND d.shop_id = s.shop_id 
AND (d.debitor_type IS NULL 
    OR (d.debitor_type IN ('T','D') AND s.techfund_debitor_enabled = 'YES') 
    OR (d.debitor_type IN ('D') AND s.techfund_debitor_enabled <> 'YES')) 

В нем могут быть ошибки, я не тестировал запрос.

+0

Спасибо большое pablomatico .. он решил мою проблему –

Смежные вопросы