1
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不是列名。这是一个局部变量名。那我怎么写上面的查询呢?

4

2 回答 2

3
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;
于 2011-04-04T05:31:06.197 回答
0
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;
于 2011-04-04T08:41:43.147 回答