0

我在 MS-SQL DB 中有一个 Order 表和一个 OrderRow 表。

OrderNO *(Order)*
--------       
100
101
102 

Product    Qty  **(OrderRow)**
----      ---
Item1     25
Item2     50
Item3      3
Item4     10
----- n items 

我想编写一个选择查询,它将返回这样的结果。

OrderNo   Item1   Item2    Item3   Item4
----------------------------------------------
 100         25      50       3      10 

目前我的查询如下。

Select Order.OrderNo,[Item1].Qty , [Item2].Qty from Order  
Outer Apply 
(Select  Qty  from OrderRow where Order.OrderNo=OrderRow.OrderNo
                                  and Product=Item1
            ) as [Item1]
Outer Apply 
(Select  Qty  from OrderRow where Order.OrderNo=OrderRow.OrderNo
                                  and Product=Item2
            ) as [Item2]

但问题是 OrderRow 中的项目数不是固定数字。

我如何编写一个适用于任意数量项目的查询?..

4

1 回答 1

0

如果行数是固定的并且已知,您可以使用PIVOT/UNPIVOT来实现这一点。但是,对于您的问题,唯一可能的方法是实现动态查询并将项目名称分配为列别名。您可以在此处了解有关动态枢轴生成器的更多信息。

于 2020-04-12T18:45:57.093 回答