Как я могу написать следующий запрос в исполняемом виде в SQL Server Express 2008 - PullRequest
1 голос
/ 04 апреля 2011
select doc_no,date,acc_no,amount,
if xvar=1
(select acc_head from my_crem c where c.acc_no=o.acc_no) as acc_head
else
(select acc_head from my_debm c where c.acc_no=o.acc_no) as acc_head
from my_ordm o;

В приведенном выше запросе xvar не является именем столбца.Это имя локальной переменной.Тогда как я могу написать вышеуказанный запрос?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011
select 
    o.doc_no,
    o.date,
    o.acc_no,
    o.amount, 
    CASE 
         WHEN @xvar = 1 THEN c.acc_head 
         ELSE d.acc_head
    END as acc_head
from 
    my_ordm o
    left join my_crem c on c.acc_no = o.acc_no   
    left join my_debm d on d.acc_no = o.acc_no;
0 голосов
/ 04 апреля 2011
select
    doc_no,
    date,
    acc_no,
    amount,
    Case @xvar 
           WHEN 1 Then (select acc_head from my_crem c where c.acc_no = o.acc_no)
           ELSE (select acc_head from my_debm c where c.acc_no = o.acc_no)
    END AS acc_head 
from my_ordm o;
...