Как транспонировать строки в таблице в столбцы (используя внешний метод apply, Dynami c запрос)? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть таблица заказов и таблица OrderRow в MS- SQL DB.

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 не являются фиксированным числом.

Как я могу написать запрос, который будет работать для любое количество предметов? ..

1 Ответ

0 голосов
/ 12 апреля 2020

Если число строк было фиксированным и известным, вы можете использовать PIVOT / UNPIVOT для достижения этой цели. Однако, с вашей проблемой, единственный возможный способ - реализовать динамический запрос c и назначить имя элемента в качестве псевдонима столбца. Узнать больше о динамических генераторах c pivot можно здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...