【发布时间】:2011-06-08 18:02:54
【问题描述】:
我被分配了一个问题,我不确定如何在 SQL Server(版本 5/8)中解决。这是简单的查询及其输出:
Select location, date_time, Item_sold
From Product
Location Date_time Item_sold
VA 12/10/2010 1:30:00 PM Candy
VA 12/10/2010 3:30:00 PM Chips
VA 12/13/2010 12:50:00 AM Wine
DC 12/13/2010 8:00:00 AM Gum
DC 12/13/2010 12:30:00 PM Bags
DC 12/13/2010 1:16:00 PM Cheese
DC 12/13/2010 12:00:00 AM Hotdog
NJ 12/14/2010 12:00:00 AM Coffee
NJ 12/14/2010 1:15:00 PM Beers
NJ 12/14/2010 12:00:00 AM Coffee
NJ 12/14/2010 1:45:00 PM Water
这是我想要的输出,我猜一个 while/for 循环或一个 pivot 函数可以完成这项工作,但我的经验还没有。基本上,我需要从 Item_sold 列增量计算已售出的商品数量(基线日期从 12/8 到 12/9、12/8 到 12/10、12/8 到 12/11、12/8 到12 月 12 日...)
Location 12/10 to 12/11 12/10 to 12/12 12/10 to 12/13 12/10 to 12/14
VA 2 2 3 3
DC 0 0 3 3
NJ 0 0 0 4
我该如何解决这个问题?
【问题讨论】:
-
我认为你的 12/8 - 12/11 和 12/8 - 12/12 对于 VA 应该是 2,不是吗?
-
@joe - 您能否确认它应该为 NJ 设置一行,并且 VA 不应该是 0/0/2/2/2/3?为什么 2 和 3 之间有 0?
-
而且查询应该是动态的?
-
@joe - 为什么正好有 6 列,你能提供一个日期范围吗?
-
@cyberkiwi,是的,它应该是 NY 的一行,但我只展示了 VA 和 DC 作为示例。日期范围是 12/8/10 到 1/5/11。
标签: sql sql-server tsql pivot