0

注文の上位 2 項目のフラット化された結果を返す SQL クエリの作成についてサポートが必要です。

テーブルと関連フィールドは次のとおりです。

Order        OrderItem       
-------      -----------     
orderId      orderId         
             productCode     
             quantity

目的の結果セットを探しています:

[orderId]    [productCode1]    [quantity1]    [productCode2]    [quantity2]
----------   --------------    -----------    --------------    -----------
o123         p134              3              p947              1   
o456         p384              2              p576              1   

結果は from でグループ化さorderIdれ、 fromのOrderTOP 2 となります。どのTOP 2が返されるかは気にしません。必要なのは2つだけです。productCodequantityOrderItem

どんな助けでも大歓迎です。

4

3 に答える 3

0
select
    o.orderId,
    max(case when row_num = 1 then oi.ProductCode end) as ProductCode1,
    max(case when row_num = 1 then oi.Quantity end) as Quantity1,
    max(case when row_num = 2 then oi.ProductCode end) as ProductCode2,
    max(case when row_num = 2 then oi.Quantity end) as Quantity2
from Order as o
   outer apply (
       select top 2
           oi.*, row_number() over (order by oi.productCode) as row_num
       from OrderItem as oi
       where oi.orderId = o.orderId
   ) as oi
group by o.orderId
于 2013-08-21T20:06:14.617 に答える