【问题标题】:SQL Server with Cross Join Unpivot具有交叉联接反透视的 SQL Server
【发布时间】:2016-12-06 05:53:39
【问题描述】:

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

ID

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

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

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

【问题讨论】:

  • 虽然您正在重新排列数据,但这与人们所说的“标准化”无关。

标签: sql-server tsql database-normalization unpivot cross-apply


【解决方案1】:

这是使用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]) 

【讨论】:

    【解决方案2】:

    试试这个:

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-15
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多