2014-01-30 2 views
1

У меня есть Order таблицу в этом проекте, какОбъединение нескольких строк заказа в монопольных Ие

OrderNo, ProductCode 

и они относятся к OrderDetails и ProductDetails таблице соответственно для деталей.

Одиночный Order может содержать несколько продуктов (скажем, максимум 4 здесь), но имеет отдельный ряд для каждого заказанного продукта.

Таким образом, данные могут быть как:

OrderNo ProductCode 
--------------------  
    1  Gadget1 
    1  CaseCover1 
    1  Cable1 

У меня есть требование показывает отчет, который выглядит как:

OrderNo ProductName1 ProductName2 ProductName3 ProductName4 
    1  Gadget1  CaseCover1  Cable1   NULL 

Это не объединение, но показывая различные столбцы.

Пожалуйста, помогите мне, как мне достичь этого с помощью Minimal или no Joins. (Цель состоит в том, чтобы запускать запрос так быстро, как есть. Есть тысячи записей заказов. Вставки и Выборы происходят каждую секунду.)

Большое спасибо.

+0

имеет ProductCode Детали изделия и ProductName, как колонны – iTSrAVIE

+0

идти на оси ... –

+0

@iTSrAVIE Мой ответ работал на вас? Если да, пожалуйста, отметьте его ответ. – DhruvJoshi

ответ

0

Используя функцию PIVOT и Row_Number(), мы можем достичь этого. См запрос ниже

SELECT [OrderNo],[1] as Product1 ,[2] as Product2,[3] as Product3,[4] as Product4 FROM 
(
SELECT 
[OrderNo], 
Row_Number() OVER (PARTITION BY [OrderNo] ORDER BY ProductCode desc)as ProductNumber, 
[ProductCode] FROM [Order] 
) Source 
PIVOT 

( 
MAX(ProductCode) FOR ProductNumber in ([1],[2],[3],[4]) 
)Pivottable 

Смотрите выходное изображение enter image description here

и вот как мой стол Заказ выглядел enter image description here

Смежные вопросы