Повернуть строки в столбцы с именами столбцов, не выходящими из строки - PullRequest
0 голосов
/ 08 ноября 2018

Я посмотрел на некоторые ответы, но ни один из них не подходит для меня.

В основном у меня есть этот набор результатов:

RowNo |  Id  |  OrderNo  |
  1      101       1
  2      101       10

Я просто хочу преобразовать это в

|  Id  |  OrderNo_0  | OrderNo_1 |
  101       1             10

Я знаю, что, наверное, мне следует использовать PIVOT. Но синтаксис мне просто не понятен. Я попробовал все, что видел в этом сообществе, но, похоже, не могу найти его для своего конкретного случая использования.

Номера заказов всегда равны двум. Чтобы прояснить ситуацию

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

А если вы хотите использовать PIVOT, то с предоставленными данными будет работать следующее:

declare @Orders table (RowNo int, Id int, OrderNo int)

insert into @Orders (RowNo, Id, OrderNo)
  select 1, 101, 1 union all select 2, 101, 10

select Id, [1] OrderNo_0, [2] OrderNo_1
from (
  select RowNo, Id, OrderNo
 from @Orders
) SourceTable
pivot (
  sum(OrderNo)
  for RowNo in ([1],[2])
) as PivotTable

Ссылка: https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

0 голосов
/ 08 ноября 2018

Из ваших примеров данных вы можете просто попытаться использовать функции min и MAX.

SELECT Id,min(OrderNo) OrderNo_0,MAX(OrderNo) OrderNo_1
FROM T
GROUP BY Id
0 голосов
/ 08 ноября 2018

Поскольку вы говорите, что для идентификатора всего два порядковых номера, вы можете присоединить набор результатов к себе в столбце идентификаторов. Для целей примера ниже, я предполагаю, что ваш набор результатов просто выбирает из одной таблицы Orders, но это должно быть достаточно просто, чтобы заменить это существующим запросом.

SELECT o1.ID, o1.OrderNo AS [OrderNo_0], o2.OrderNo AS [OrderNo_1] 
FROM Orders AS o1 
INNER JOIN Orders AS o2 
ON (o1.ID = o2.ID AND o1.OrderNo <> o2.OrderNo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...