我有一个case语句,可以对金额进行总计,四舍五入和加标签,但效果很好,但是数据最终以水平格式显示(每条记录有多个金额),这导致我无法在随后的语句中对数据进行垂直格式化(每笔记录一笔金额)。如果可能的话,我想在一份声明中完成。我的代码如下:
SELECT
Field,
ROUND(SUM(CASE
WHEN TYPE = 'Paid Loss'
THEN AMOUNT
ELSE 0
END
), 2
) PAID,
ROUND(SUM(CASE
WHEN TYPE = 'OS'
THEN AMOUNT
ELSE 0
END
), 2
) OS,
ROUND(SUM(CASE
WHEN TYPE <> 'Paid Exp'
THEN AMOUNT
ELSE 0
END
), 2
) INCURRED
FROM dbo.mydatabase
GROUP BY Field;
结果是:
Field |PAID |OS |INCURRED
----------------------------
result1 | 1 | 20 | 10
result2 | 5 | 30 | 15
当我真正想要的是:
Field | DATA_TYPE | AMOUNT
---------------------------
result1 | PAID | 1
result2 | PAID | 5
result3 | OS | 20
result4 | OS | 30
result5 | INCURRED | 10
result6 | INCURRED | 15
键将是唯一的,所以这不是问题。有人知道如何重新排列CASE,以便可以在一个语句中完成吗?谢谢!
这不行吗?