SQL 具有交叉联接反透视的服务器

SQL Server with Cross Join Unpivot

我有一个独特的交叉申请。我有一个看起来像这样的 table。

ID

我想看到的是,是否可以将其拆分为 2 行和 4 列。 我想把SUB拆分在一起,把APP拆分在一起。

ClaimID === SUB Cost === APP Cost === Cost Type
109508  === 51.86    === 0.00     === "Parts"
109508  === 318.08   === 0.00     === "Labor"

这允许 table 有一个简单的一行用于每个类别的 SUB 与 APP 成本。我真的很感激这方面的帮助。作为旁注,我能够做到这一点,其中 1 行变成 4 行,SUB 和 APP 每行都在不同的行上(每列一行),但是我们失去了比较 SUB 和 APP 的能力.

这是使用 Cross Apply 反透视 数据

的一种方法
SELECT ClaimId,
       [Sub Cost],
       [App Cost],
       [Cost Type]
FROM   yourtable
       CROSS apply (VALUES (SUB_AllParts,APP_AllParts, 'Parts'),
                           (SUB_AllLabor,APP_AllLabor,'Labor')) 
                           tc ([Sub Cost], [App Cost], [Cost Type]) 

试试这个:

select claimid
        ,sub_allparts as 'sub cost'
        ,app_allparts as 'app cost'
        ,'"Parts"' as 'Cost Type'  
        from claim 
union all
select claimid
        ,sub_alllabor as 'sub cost'
        ,app_alllabor as 'app cost'
        ,'"Labor"' as 'Cost Type' 
         from claim