サブクエリの結果を結果セットに返すクエリを作成しようとしています。
私が使用しているテーブルは次のとおりです。
Orders OrderDetails
------- -----------
orderId orderDetailId
(other data) orderId
productName
各注文の最初の 2 つの注文詳細を取得したいと考えています (ほとんどの注文には 1 つまたは 2 つの詳細しかありません)。目的の結果セットの例を次に示します。
orderId (other order data) productName1 productName2
------- ------------------ ------------ ------------
1 (other order data) apple grape
2 (other order data) orange banana
3 (other order data) apple orange
これは私がこれまでに試したことです:
SELECT o.orderid,
Max(CASE WHEN detail = 1 THEN oi.productname END) AS ProductName1,
Max(CASE WHEN detail = 2 THEN oi.productname END) AS ProductName2
FROM orders AS o
OUTER apply (SELECT TOP 2 oi.*,
Row_number() OVER (ORDER BY orderdetailid) AS detail
FROM orderdetails AS oi
WHERE oi.orderid = o.orderid) AS oi
GROUP BY o.orderid
ホストされた e コマース ソリューションのカスタム レポート モジュールでこれを実行すると、次の役に立たない構文エラーが発生します: SQL エラー: '(' 付近の構文が正しくありません。
残念ながら、使用している SQL Server のバージョンがわかりません。カスタマー サポートは何も知らず、@@Version を選択しても機能しません。
エラー メッセージが名前で関数を参照している場合でも、row_number() 関数は適切にサポートされていないようです。
助けてくれてありがとう!