【发布时间】:2014-01-19 10:53:01
【问题描述】:
我有一张桌子,上面放着所有售出的物品。这些记录适用于已签发文件的所有行。有些商品每天都有销售,而其他商品则没有。还有一些没有每日销售的人,有一定的销售期。
我需要一个查询来向我显示每件商品的最大销售期(以天数计)。这可能吗?
在 Excel 中可以这样做,使用按项目/天/数量分组的表并应用以下公式:“如果天数 = 0,则返回 0,否则,如果前一天的金额 = 0,则返回 1,否则返回前一天的金额 + 1"。最后它只是检查该列的最大值。
在 SQL 中执行此操作有什么帮助吗?谢谢!
这是一个小样本(1 月 1 日至 10 日期间):
原表:
SalesDate Doc ItemID Qty
01-jan 156 123456 10
01-jan 156 654321 5
01-jan 157 123456 3
02-jan 158 654321 4
02-jan 158 123456 7
03-jan 159 123456 8
04-jan 160 654321 3
04-jan 161 654321 8
05-jan 162 654321 3
06-jan 163 123456 7
06-jan 163 654321 2
06-jan 164 123456 9
07-jan 165 654321 4
08-jan 166 123456 5
09-jan 167 123456 6
10-jan 168 123456 3
10-jan 168 654321 5
10-jan 169 654321 1
中间表:
CalendarDate ItemID SumQty FollowedSalesDays
01-jan 123456 13 1
02-jan 123456 7 2
03-jan 123456 8 3
04-jan 123456 0 0
05-jan 123456 0 0
06-jan 123456 16 1
07-jan 123456 0 0
08-jan 123456 5 1
09-jan 123456 6 2
10-jan 123456 3 3
01-jan 654321 5 1
02-jan 654321 4 2
03-jan 654321 0 0
04-jan 654321 11 1
05-jan 654321 3 2
06-jan 654321 2 3
07-jan 654321 4 4
08-jan 654321 0 0
09-jan 654321 0 0
10-jan 654321 6 1
最终结果:
ItemID MaxFollowedSalesDays
123456 3
654321 4
【问题讨论】:
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?
-
对不起:MS SQL Server。
-
你能展示一些示例数据和所需的输出吗??
-
@M.Ali:问题已编辑 - 添加了小样本
标签: sql sql-server