Sql server 2008 SQL中的列数据转换为行数据
我有一张名为Trn_EmpRetation的表格,上面的列是营业额和经营业绩 数据如下所示Sql server 2008 SQL中的列数据转换为行数据,sql-server-2008,Sql Server 2008,我有一张名为Trn_EmpRetation的表格,上面的列是营业额和经营业绩 数据如下所示 TurnOver EmpRetension 22 199 Description TotalNumber TurnOver 22 EmpRetension 199 我希望数据如下所示 TurnOver EmpRetension 22 199 Description TotalNumber Tu
TurnOver EmpRetension
22 199
Description TotalNumber
TurnOver 22
EmpRetension 199
我希望数据如下所示
TurnOver EmpRetension
22 199
Description TotalNumber
TurnOver 22
EmpRetension 199
如何在SQL中实现这一点
谢谢
基本要求。也许这就足够了:
SELECT x.Description, x.TotalNumber FROM
(
SELECT Description = 'TurnOver',
TotalNumber = SUM(TurnOver)
FROM dbo.Trn_EmpRetation
UNION ALL
SELECT Description = 'EmpRetension',
TotalNumber = SUM(EmpRetension)
FROM dbo.Trn_EmpRetation
) x
您可以使用:
如果您想要一个总和,那么只需使用SUM
和groupby
:
SELECT uptv.[Description], TotalNumber = SUM(uptv.TotalNumber)
FROM Trn_EmpRetation AS t
UNPIVOT
( TotalNumber
FOR [Description] IN ([Turnover], [EmpRetension])
) AS uptv
GROUP BY uptv.[Description];
问题没有提到任何金额或重复项。。。如果这是必需的,尽管我仍然使用UNPIVOT,但只需添加< <代码>和/组> <代码> > -这避免了多个表扫描。没有,但是重复似乎没有意义,更重要的是,一个列<代码> TooToSuth/Cuff>。@ USER 3069097:考虑接受一个答案。不客气