ループを使用して、計算に基づいて可変数の列を作成できますか?
テーブル A: ID、名前、日付、アイテムの列があります。誰が何日に商品を購入したかを示します。アイテムが購入されるたびに、名前が複数回表示されます。id は一意です。
テーブル B: 名前、開始日があります。名前がいつ機能し始めたかを示します。
(name を begindate に関連付ける方法は知っているので、以下の疑似コードには実際には含まれていません。)
表 C は、結果を次のようにしたいものです。
name itemsday1 itemsday2 itemsday3... itemsdayn
2 番目の列は今日購入されたアイテムに対応し、最後の列は名前の開始日より前に購入されたアイテムに対応します。列の数は、最初に開始した人によって異なる必要があります。クエリをループして、begindate から今日までの毎日の列を作成し、その日に Name によって購入されたアイテムの数をカウントします。
疑似コード:
declare mostd INT
select datediff(dd, begindate, getdate()) as spans into #span from B
set mostd = select max(spans) from #span
select
name
,while mostd !=0
begin
case when???
count(items)
end as column.mostd
mostd=mostd-1
end
end
from A (join B blah blah)
group by name
Results
NAME column4 column3 column2 column1 column0
James 9 8 7 6 NULL
Wade 5 4 3 NULL NULL
Bosh 2 1 NULL NULL NULL
Durant 0 9 8 NULL NULL
TSQL はこれを行うことができますか? これを実際のコードに固めるのを手伝ってくれませんか? ありがとう。