使用Sql查询行到列

时间:2009-06-26 05:28:00

标签: sql-server-2005 pivot

我有一个列为

的表格
              Cost     Rate

              Repair   12
              Repair   223
              Wear     1000    
              Wear     666
              Fuel     500
              Repair   600
              Fuel     450
              Wear     400

现在我希望这些数据为

             Repair    Wear   Fuel
               825     2066    950

使用Sql查询

提前致谢

6 个答案:

答案 0 :(得分:4)

select sum(case when cost = 'Repair' then rate else null end) as Repair
, sum(case when cost = 'Wear' then rate else null end) as Wear
, sum(case when cost = 'Fuel' then rate else null end) as Fuel 
from CostRateTable

答案 1 :(得分:1)

可以使用SQL Server的PIVOT运算符获取所需的“轮换”(将行设置为列)。

答案 2 :(得分:1)

我认为您正在寻找一种方法来执行 Dynamic Pivoting Dynamic Cross-Tabs

检查这些文章:

答案 3 :(得分:0)

使用SUM()等聚合函数时,您可以使用GROUP BY来合并结果。

SELECT Cost, SUM(Rate) FROM MyTable GROUP BY Cost

这将返回你所要求的结果,但我希望这不应该是一个大问题。

Cost     SUM(Rate)
---      ---
Repair   825
Wear     2066
Fuel     950

答案 4 :(得分:0)

从费用

的表名组中选择费用,总和(费率)

答案 5 :(得分:0)

您可以使用简单的交叉表查询执行此操作。 “访问查询”窗口中有一个向导,可指导您创建一个向导。只需单击“新建查询”按钮,然后选择“交叉表查询向导”。