Alex2 101 Ответов: 1

Как получить данные из другой таблицы на основе условия с помощью запроса select в SQL?


Я хочу получить данные из таблицы (скажем, AutoReturnPostingDetails) или из другой таблицы (скажем, Paramconfig) на основе статуса с помощью основного запроса select в sql.

Мой запрос выглядит следующим образом:
select  id,                           
CASE WHEN ITCFinal.AutoReturnStatus=7004          
      THEN (select DebitAccNo from AutoReturnPostingDetails AP         
      where AP.OutwardInstFinalId=ITCFinal.OutwardInstFinalId)        
      ELSE @DebitAccount END AS DebitAccount       
                                         
                                          
 FROM OUT_ITC_Final ITCFinal 


Что я уже пробовал:

Select  id,                           
CASE WHEN ITCFinal.AutoReturnStatus=7004          
      THEN (select DebitAccNo from AutoReturnPostingDetails AP         
      where AP.OutwardInstFinalId=ITCFinal.OutwardInstFinalId)        
      ELSE @DebitAccount END AS DebitAccount       
                                         
                                          
 FROM OUT_ITC_Final ITCFinal

1 Ответов

Рейтинг:
0

ZurdoDev

Вместо этого вы захотите использовать соединение. По сути, если я правильно понимаю вашу попытку SQL, вы хотите использовать DebitAccNo из соответствующей записи, если она существует, а если нет, то вы хотите использовать переданный параметр. Для этого используйте левое соединение.

SELECT id, COALESCE(t2.DebitAccNo, @DebitAccount) 
FROM OUT_ITC_Final t1 
LEFT JOIN AP.OutwardInstFinalID t2 ON t1.OutwardInstFinalID = t2.OutwardInstFinalID
WHERE t1.AutoReturnStatus = 7004


Что-то в этом роде.


[no name]

Это не сработает. Он принимает первое значение, если есть при присоединении. Я использовал скалярную функцию и передал параметр по мере необходимости и вернул учетную запись no на основе условия.

ZurdoDev

Я не понимаю, но если у тебя это получилось, то хорошо. Это все еще звучит так, как будто вы все усложняете.