如何将列转换为行?

3

我需要您的帮助.. 我有一个动态查询,返回的数据格式大致如下..

Item1  Item1Remarks  Item2  Item2Remarks  Item3  Item3Remarks  Item4  tem4Remarks
==
2      bla bla       5      bla bla       1      bla bla       4      bla bla

项目名称可能会变化(因为数据是动态的,所以可能会发生更改)。 项目列包含项目数量。

现在我需要的数据格式如下:

Item    Qty Remarks
==
Item1   2   bla bla
Item2   5   bla bla
Item3   1   bla bla
Item4   4   bla bla

2
如果你真的需要帮助,请发布你的问题。 - JNK
也许你可以使用这个。https://dev59.com/5ms05IYBdhLWcg3wQvyq#7343619 - Mikael Eriksson
2个回答

5

请查看MSDN上有关使用PIVOT和UNPIVOT的内容。 点击此处


4
为了具体回答你的问题,你基本上需要一个复杂的多列UNPIVOT查询,例如:
SELECT Item, Qty, Remarks
FROM ItemDetail
UNPIVOT -- This UNPIVOT gives us the Item column
(  
  Qty FOR Item IN (Item1, Item2, Item3, Item4)  
) TheItem  
UNPIVOT -- This UNPIVOT gives us the corresponding Remarks column
(  
  Remarks FOR ItemRemarks IN (Item1Remarks, Item2Remarks, 
                              Item3Remarks, Item4Remarks)  
) Ct  
WHERE RIGHT(Item,1)=SUBSTRING(ItemRemarks,5,1) -- Match items with their remarks

你没有指定表名,所以请用实际名称替换ItemDetail


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接