我可以使用循环根据计算创建可变数量的列吗?
表 A:包含 id、name、date、item 列。它显示谁在哪一天购买了一件物品。每次购买商品时,名称都会出现多次。id 是唯一的。
表 B:有名称,开始日期。它显示名称何时开始工作。
(我知道如何将 name 与 begindate 相关联,所以它实际上不在下面的伪代码中。)
表 C 是我希望我的结果看起来像的样子:
name itemsday1 itemsday2 itemsday3... itemsdayn
第二列对应于今天购买的物品,最后一列对应于名称开始日期之前购买的物品。列数需要根据最早开始的人而有所不同。我希望我的查询循环并为从 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 可以做到这一点吗?你能帮我把它固化成真正的代码吗?谢谢。