如何在数据透视中使用多列? [英] How to use multiple columns in pivot?

查看:37
本文介绍了如何在数据透视中使用多列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个查询

SELECT [b].[BillID],
       [b].[BillingCode],
       [bc].[CurrentUsage],
       [bc].[Rate],
       [bc].[CurrentCost],
       [c].[Title]
 INTO   #Temp
 FROM   [dbo].[Bills] AS [b]
 INNER JOIN [dbo].[BillCosts] AS [bc] ON [bc].[BillIDRef] = [b].[BillID]
 INNER JOIN [Base].[Costs] AS [c] ON [c].[CostID] = [bc].[CostIDRef]

这是结果

BillID      BillingCode          CurrentUsage Rate        CurrentCost Title
----------- -------------------- ------------ ----------- ----------- ------
5           44545455             10           20          30          AvgTimes
5           44545455             40           50          60          MaxTimes

我需要这个结果:

BillID      BillingCode          AvgTimes Cost  MaxTimes Cost  AvgTimes Rate  MaxTimes Rate AvgTimes Usage MaxTimes Usage
----------- -------------------- -------------- -------------- -------------- ------------- -------------- ---------------
5           44545455             30             60             20             50            10             40

是否可以在多列 CurrentUsage,Cost,Rate 上使用数据透视表?如果无法使用数据透视表,如何编写查询?

Is it possible using pivot on multiple columns CurrentUsage,Cost,Rate? If isn't possible using pivot, How to write query?

推荐答案

你可以使用条件聚合:

SELECT [b].[BillID],
       [b].[BillingCode],
       MAX(CASE WHEN [c].[Title] = 'AvgTimes' THEN [bc].[CurrentUsage] END) AS [AvgTimes Usage],
       MAX(CASE WHEN [c].[Title] = 'MaxTimes' THEN [bc].[CurrentUsage] END) AS [MaxTimes Rate],
       MAX(CASE WHEN [bc].[Title] = 'AvgTimes' THEN [bc].[Rate] END) AS [AvgTimes Rate],
       MAX(CASE WHEN [bc].[Title] = 'MaxTimes' THEN [bc].[Rate] END) AS [MaxTimes Usage],
       MAX(CASE WHEN [bc].[Title] = 'AvgTimes' THEN [bc].[CurrentCost] END) AS [AvgTimes CurrentCost],
       MAX(CASE WHEN [bc].[Title] = 'MaxTimes' THEN [bc].[CurrentCost] END) AS [MaxTimes CurrentCost]
INTO   #Temp
FROM   [dbo].[Bills] AS [b]
INNER JOIN [dbo].[BillCosts] AS [bc] ON [bc].[BillIDRef] = [b].[BillID]
INNER JOIN [Base].[Costs] AS [c] ON [c].[CostID] = [bc].[CostIDRef]
GROUP BY [b].[BillID], [b].[BillingCode]

这篇关于如何在数据透视中使用多列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆