数据存储在以下列的表格中:
Date, Reference, Amount
Amount
可以是借记或贷记价值。
我需要一个查询,在AMOUNT
或Debit
列(由查询添加)中返回Credit
列,如下所示:
Date Ref Debit Credit
2017/04/10 ABC123 500.00
2017/04/11 XYZ321 -500.00
我已尝试使用CASE
语句,但无法正确添加Debit
或Credit
列的语法:
select
date, ref, amount,
case
when amount >= 0
then amount as debit
when amount < 0
then amount as credit
end
from
dtrans
答案 0 :(得分:0)
IIF for 2012+否则CASE
select date, ref,
IIF(amount>=0,amount,0) debit,
IIF(amount<0,amount,0) credit
from dtrans
更新
select date, ref,
IIF(amount>=0,iif(amount=0,'',amount),0) debit,
IIF(amount<0,amount,0) credit
from dtrans
答案 1 :(得分:0)
试试这个
create table #temp(Mydate date, ref varchar(10), amount int)
insert into #temp values (getdate(),'ABC123',500)
insert into #temp values (getdate()+10,'XYZ321',-500)
select Mydate, ref, amount,
case when amount>=0 then amount else null end as debit,
case when amount<0 then amount else null end as credit
from #temp
答案 2 :(得分:0)
试试这个:
select date, ref, amount,
case when amount>=0 then amount else null end as Debit,
case when amount<0 then amount else null end as Credit
from dtrans
答案 3 :(得分:-1)
请尝试以下方法......
SELECT date,
ref,
CASE
WHEN ISNULL( debit, 0 ) > 0 THEN
debit
ELSE
credit
END AS amount
FROM dtrans
上述内容按正常情况选择date
和ref
。然后,它会测试debit
字段以查看它是否包含NULL
值,如果有,则返回0
,如果不存在,则返回debit
的值。然后将此返回值与0
进行比较。因此,如果debit
的值不是NULL
,则CASE
条件成功,并选择debit
的值。如果CASE
条件失败,则选择credit
的值。无论选择debit
还是credit
,都会将SELECT
语句作为amount
的值返回,这意味着我们的SELECT
将始终返回以下内容字段...
date
ref
amount
如果您有任何问题或意见,请随时发表评论。