多数の行にN個の列を与えるために優れたT-SQLクエリを探しています。しかし、列の数は各行で同じではありません。T-SQL N個の行を列に変換する
たとえば、次のような約100万行の注文表があります。
Order OrderID Date ======== ======== 1 20160102 2 20160402
各注文にN個の注文線を付けることができます。
私の注文表には約150万行があります。
OrderLine OrderID OrderLine ProductID Amount ======== ======== ========== ========== 1 1 3245 299.00 2 1 9876 799.00 2 2 5466 899.00 2 3 7752 599.00
Iは、次のようなendresultしたい:
OrderID Date ProductID1 Amount1 ProductID2 Amount2 ProductID3 Amount3 ======== ======== ========== ======= ========== ======= ========== ======= 1 20160102 3245 299.00 2 20160402 9876 799.00 5466 899.00 7752 599.00
注文ラインの数は各注文のために(50のように)大きくすることができます。
私は副問い合わせを使用することができると思いますが、それは、副選択のN-数を必要とする -
とは、非常に悪い
SELECT OrderID, Date, (SELECT ProductID FROM ORDERLINE OI JOIN O ON O.OrderID=OI.OrderID WHERE ORDERLINE=1) AS ProductID1, (SELECT Amount FROM ORDERLINE OI JOIN O ON O.OrderID=OI.OrderID WHERE ORDERLINE=1) AS Amount1, ... (SELECT ProductID FROM ORDERLINE OI JOIN O ON O.OrderID=OI.OrderID WHERE ORDERLINE=N) AS ProductIDN, (SELECT Amount FROM ORDERLINE OI JOIN O ON O.OrderID=OI.OrderID WHERE ORDERLINE=N) AS AmountN FROM ORDER Oを実行することになり別のオプションは、おそらく旋回することができます。 しかし、私が見ているように、それは "伝統的な"ピボッティングではなく、ダイナミックピボッティングです。
しかし、私はそれがどのように見え、実行するのかは分かりません。
の可能性のある重複(HTTPダイナミック行く必要がある場合は、[SQL Serverの動的なPIVOTクエリ?]:/を/stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) – iamdave