- 爱易网页
-
MSSQL教程
- 行列转换有关问题,在线结帖!
日期:2014-05-18 浏览次数:20411 次
行列转换问题,在线结帖!!急
我有一张表tableA,结构如下:
类型名称 基本 业绩 提成
电子 500 1000 100
电脑 400 1200 240
合计 900 2200 340
怎么得到以下结果:
--------------------------------
类型名称 电子 电脑 合计
基本 500 400 900
业绩 1000 1200 2200
提成 100 240 340
------解决方案--------------------
Select 类型名称,Sum(电子) As 电子,Sum(电脑) As 电脑,Sum(合计) As 合计
From (
Select
'基本 ' As 类型名称,
Case 类型名称 When '电子 ' Then 基本 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 基本 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 基本 Else 0 End As 合计
From
TableA
Union All
Select
'业绩 ' As 类型名称,
Case 类型名称 When '电子 ' Then 业绩 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 业绩 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 业绩 Else 0 End As 合计
From
TableA
Union All
Select
'提成 ' As 类型名称,
Case 类型名称 When '电子 ' Then 提成 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 提成 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 提成 Else 0 End As 合计
From
TableA
) T Group By 类型名称 Order By 类型名称 Desc
------解决方案--------------------
---创建测试数据
If Object_id( 'TableA ') Is Not Null
Drop Table TableA
Go
Create Table TableA(类型名称 Varchar(10),基本 Int,业绩 Int,提成 Int)
Insert TableA Select '电子 ',500,1000,100
Union All Select '电脑 ',400,1200,240
Union All Select '合计 ',900,2200,340
---查询测试数据
Select * From TableA
---查询结果
Select 类型名称,Sum(电子) As 电子,Sum(电脑) As 电脑,Sum(合计) As 合计
From (
Select
'基本 ' As 类型名称,
Case 类型名称 When '电子 ' Then 基本 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 基本 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 基本 Else 0 End As 合计
From
TableA
Union All
Select
'业绩 ' As 类型名称,
Case 类型名称 When '电子 ' Then 业绩 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 业绩 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 业绩 Else 0 End As 合计
From
TableA
Union All
Select
'提成 ' As 类型名称,
Case 类型名称 When '电子 ' Then 提成 Else 0 End As 电子,
Case 类型名称 When '电脑 ' Then 提成 Else 0 End As 电脑,
Case 类型名称 When '合计 ' Then 提成 Else 0 End As 合计
From
TableA
) T Group By 类型名称 Order By 类型名称 Desc