У меня возникла проблема с попыткой выполнить опорную точку на столе. Образец того, что я хочу, показан ниже.SQL Server 2008 Pivot без агрегации
ProductBarcode ProductID
-------------- ---------
1000 P1
1001 P1
1002 P2
1003 P3
1004 P4
1005 P4
Теперь я хочу преобразовать приведенную выше таблицу во что-то, как показано ниже.
ProductID Barcode1 Barcode2
--------- -------- --------
P1 1000 1001
P2 1002
P3 1003
P4 1004 1005
Я пытался работать его с помощью следующего запроса, но это не дает желаемых результатов:
SELECT
[r1].[productID],
[r1].[Productbarcode] as Barcode1,
[r2].[ProductBarcode] as Barcode2
FROM products as r1 right JOIN products as r2 on r1.[productID] = r2.[productID]
Теперь это всего лишь пример, и в конкретном случае, есть сотни продуктов, которые имеют несколько штрих-кодов.
Я даже попытался использовать следующий запрос, но все, что у меня было, было нулем в обоих столбцах штрих-кода.
SELECT productID,[barcode1],[barcode2]
FROM
(SELECT barcode, productID
FROM products) as TableToBePivoted
PIVOT
(MAX(barcode)
FOR barcode IN ([barcode1], [barcode2])
) AS PivotedTable;
Любая помощь была бы принята с благодарностью.
Спасибо за это Купер. Я попробовал запрос, который вы написали, и я получаю штрих-коды под столбцом Barcode1, но в столбце Barcode2 он показывает все NULL. –
@Misbah - Я использую ваши данные образца, отлично работал для меня. Получаете ли вы полученные результаты при запросе всего, кроме строки с помощью оператора поворота? –
@Misbah Yanus - я разместил все sql, используемые для создания ваших данных образца и запроса, которые будут давать ожидаемые результаты. –