2

レポートの目的のために、各レコードで一意のクエリの結果をピボットする必要があります。私の現在の声明は次のとおりです。

SELECT *
FROM Sales AS x
WHERE (select count(*) from Sales where customer_name=x.customer_name 
        and order_date>=x.order_date)<=5
ORDER BY customer_name, order_date, price;

クエリ出力のサンプルは次のとおりです。

customer_name    order_date        price
Company A        2009-02-01        800 
Company A        2009-03-01        100
Company A        2009-04-01        200
Company A        2009-05-01        300
Company A        2009-06-01        500
Company B        2009-02-01        100
Company B        2009-02-01        800
Company B        2009-04-01        200
Company B        2009-05-01        300
Company B        2009-06-01        500

最終的に、情報は次のようになる必要があります。

Customer_Name     order_date1  price1    order_date2  price2    order_date3  price3    order_date4  price4    order_date5  price5   
Company A         2009-02-01   800       2009-03-01   100       2009-04-01   200       2009-05-01   300       2009-06-01   500
Company B         2009-02-01   100       2009-02-01   800       2009-04-01   200       2009-05-01   300       2009-06-01   500

各グループに共通のレコードがあり、ピボット前のクエリ結果が次のようになるように、「pivot_id」の列を追加する必要があると考えています。

pivot_id  customer_name    order_date        price
1         Company A        2009-02-01        800 
2         Company A        2009-03-01        100
3         Company A        2009-04-01        200
4         Company A        2009-05-01        300
5         Company A        2009-06-01        500
1         Company B        2009-02-01        100
2         Company B        2009-02-01        800
3         Company B        2009-04-01        200
4         Company B        2009-05-01        300
5         Company B        2009-06-01        500

購入ごとに自動レコード番号を生成するだけでなく、customer_nameごとに最初からやり直すSQLステートメントはどれですか?

SQLコードビルダーを使用したAccess2007での作業。ソリューションがAccessと互換性がある場合は素晴らしいでしょう。

長さでごめんなさい。前もって感謝します。

4

1 に答える 1