如何在单个列下插入多个列值并分隔列名称?

时间:2014-10-13 08:50:48

标签: sql sql-server-2008

在数据库中有一个表

   Name | id  | Yearly_Profit | Yearly_Loss | Monthly_Profit | Monthly_loss

   Alex   1     10                  20           30             40

    Ben    2     100                200           300            400

输出表将是这样的

    Name | id  | Profit | Loss | Type 
     Alex   1     10       20    Yearly  
     Ben    2    100       200    Yearly 
     Alex   1     30       40     Monthly
     Ben    2    300       400    Monthly

我该怎么做? 这有点像枢轴或其他吗?

2 个答案:

答案 0 :(得分:2)

你可以使用unpivot,但是union all对你来说是最简单的解决方案。

select Name, id, Yearly_Profit as Profit, Yearly_Loss as Loss, 'Yearly' as Type
from your_table
union all
select Name, id, Monthly_Profit , Monthly_loss, 'Monthly'
from your_table

答案 1 :(得分:0)

此查询适用于您,在此特定情况下。

SELECT
   Name,
   ID,
   Yearly_Profit AS 'Profit', 
   Yearly_Loss AS 'Loss',
   'Yearly' AS 'Type'
FROM Table

UNION ALL

SELECT
   Name,
   ID,
   Monthly_Profit AS 'Profit', 
   Monthly_Loss AS 'Loss',
   'Monthly' AS 'Type'
FROM Table
ORDER BY 5

但是,如果您的表格中有多列,那么您可能需要使用UNPIVOT