0

以下のクエリ:

SELECT  i.Item_ID

  FROM  AGR_Header ah
        LEFT JOIN AGR_Detail ad
               ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
        LEFT JOIN IV_Item i
               ON i.IV_Item_RecID = ad.IV_Item_RecID

次の結果を示します。

a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count
a4 black usage page count
a4 colour usage page count

次のように表示されるように、各 Item_ID の列を作成する方法はありますか。

A4 Black                     A4 Colour
a4 black usage page count    a4 colour usage page count
a4 black usage page count    a4 colour usage page count
a4 black usage page count    a4 colour usage page count
a4 black usage page count    a4 colour usage page count

ROW_NUMBER を使用して各 Item_ID に連番を割り当てるか、PIVOT を使用することについて読んだことがあります。

乾杯

4

1 に答える 1

3

出力が前述のとおりである場合、目的の出力に対して次の操作を実行できます。

SELECT 
    ISNULL(a4b.Item_ID, '') 'A4 Black', 
    ISNULL(a4c.Item_ID, '') 'A4 Color'
FROM
(
  SELECT    i.Item_ID, ROW_NUMBER() OVER(ORDER BY i.Item_ID ASC) 'RowNum'

  FROM  AGR_Header ah
        LEFT JOIN AGR_Detail ad
               ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
        LEFT JOIN IV_Item i
               ON i.IV_Item_RecID = ad.IV_Item_RecID
  WHERE i.Item_ID LIKE 'a4 black%'
) AS a4b
FULL OUTER JOIN
(
  SELECT    i.Item_ID, ROW_NUMBER() OVER(ORDER BY i.Item_ID ASC) 'RowNum'

  FROM  AGR_Header ah
        LEFT JOIN AGR_Detail ad
               ON ad.AGR_Header_RecID = ah.AGR_Header_RecID
        LEFT JOIN IV_Item i
               ON i.IV_Item_RecID = ad.IV_Item_RecID
  WHERE i.Item_ID LIKE 'a4 color%'
) AS a4c
ON a4b.RowNum = a4c.RowNum

OUTER JOIN は、a4 black と a4 color のそれぞれのエントリ数が異なる場合を処理します。

于 2012-11-12T05:10:10.833 に答える