将列数据转换为行数据SQL

时间:2019-10-20 14:04:11

标签: sql sql-server

我在SQL表中有一些看起来像这样的数据。

[ID],[SettleDate],[Curr1],[Curr2][Quantity1],[Quantity2],[CashAmount1],[CashAmount2]

我遇到的问题是,我需要根据此数据创建2条记录(所有信息均来自1和2的所有信息)。下面的例子。

[ID],[SettleDate],[Curr1],[Quantity1],[CashAmount1]
[ID],[SettleDate],[Curr2],[Quantity2],[CashAmount2]

有人知道怎么做吗?

谢谢

2 个答案:

答案 0 :(得分:0)

为此的标准(即跨RDBMS)解决方案是使用union

select ID, SettleDate, Curr1, Quantity1, CashAmount1 from mytable
union all select ID, SettleDate, Curr2, Quantity2, CashAmount2 from mytable

根据您的RBDMS,可能会提供更整洁的解决方案。

答案 1 :(得分:0)

另一个选择。 ItemNbr 1/2仅用于维护哪个元素。

 Select A.[ID]
       ,A.[SettleDate]
       ,B.*
  From  YourTable A
  Cross Apply ( values (1,[Curr1],[Quantity1],[CashAmount1])
                      ,(2,[Curr2],[Quantity2],[CashAmount2])
              ) B{ItemNbr,Curr,Quantity,CashAmount)