具有多个字段的SSMS案例说明

问题描述 投票:0回答:1

我有一个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,以便可以在一个语句中完成吗?谢谢!

case sql-server-2014 unpivot
1个回答
0
投票

这不行吗?

© www.soinside.com 2019 - 2024. All rights reserved.