猿问

求助一个查询连续3天超库存的sql语句写法

现有一个stock库存表,共有四个字段:日期、门店、商品、超库存次数(正整数,最小为0值),示例数据如下:

日期 门店 商品 超库存次数
2011-05-01 001店 电视机 0
2011-05-01 002店 电视机 1
2011-05-01 003店 电视机 4
2011-05-02 001店 自行车 2
2011-05-02 002店 自行车 0
2011-05-03 001店 冰箱    7
2011-05-03 003店 冰箱    0
... ... ... ...

现在前端作了一个查询,查询条件是“开始日期、结束日期”两个条件,希望查出来的结果是:每家店每个商品的“连续三天超库次数”(只要"超库存次数"字段>0则代表当天超库了)。

要求:从查询开始日进行计算,查询时要去除周六、周日,只计算周一至周五(循环计算),如果有连续三天"超库存次数"均大于0则计为1,如此累计

示例如下:查询条件是从2011.05.03至2011.06.22,则某个门店+某个商品:
2011.05.03 周二 超库存次数>0
2011.05.04 周三 超库存次数>0
2011.05.05 周四 超库存次数>0 计为1次
2011.05.06 周五 超库存次数>0
2011.05.07 周六 跳过
2011.05.08 周日 跳过
2011.05.09 周一 超库存次数>0
2011.05.10 周二 超库存次数>0 计为2次,注意这个是跳过周六日后,上周五 +本周一 +本周二也算作1次
2011.05.11 周三 超库存次数=0
2011.05.12 周四 超库存次数>0
2011.05.13 周五 超库存次数>0
2011.05.14 周六 跳过
2011.05.15 周日 跳过
2011.05.16 周一 超库存次数=0
2011.05.17 周二 超库存次数>0
2011.05.18 周三 超库存次数>0
2011.05.19 周四 超库存次数>0 计为3次,前面几个都没有连续3天
2011.05.20 周五 超库存次数>0

还请高手帮忙看下,非常感谢!

元芳怎么了
浏览 833回答 10
10回答

郎朗坤

写存储过程吧,先将记录排个序,然后循环所有的记录,自己来计算超出库存的计数。

肥皂起泡泡

你要是把建表语句还有数据丢出来 还可以试试  不然谁那么人才

冉冉说

多谢你的建议,我一会试试

猛跑小猪

试过了朋友,结果也不对。查不出数据来

森林海

试试这个sql文 --日期  CreateTime--门店 shop --商品 goods--超库存次数 PerCountSELECT temp.shop,temp.goods,ceiling(COUNT(1)*1.0/3) AS PerCountFROM(         SELECT  CreateTime,shop,Goods,StockCount FROM    testStock ts WHERE   stockCount > 0 AND (DATENAME(dw,CreateTime)<>'sunday' AND DATENAME(dw,CreateTime)<>'Saturday')   AND EXISTS ( SELECT 1       FROM   testStock       WHERE  stockCount > 0        AND ts.goods = goods        AND         (         DATEDIFF(DAY, ts.CreateTime, CreateTime) = 1          OR          (          DATENAME(dw,CreateTime)='Saturday' AND DATEDIFF(DAY, ts.CreateTime, CreateTime)=3         )        )        )   AND EXISTS ( SELECT 1       FROM   testStock       WHERE  stockCount > 0        AND ts.goods = goods        AND         (         DATEDIFF(DAY, ts.CreateTime, CreateTime) = 2         OR          (          DATENAME(dw,CreateTime)='sunday' AND DATEDIFF(DAY, ts.CreateTime, CreateTime)=4         )        )        )      )tempGROUP BY temp.shop,temp.goods

浮云间

我测试过,结果不对

侃侃尔雅

你好, 先分析下你的源数据表的格式是 超库存表 { 日期, 门店, 商品, 超库存次数 } 请问有为源表设置集聚索引(主键)吗?   然后你在说一下你具体需要得到的结果表的列数及他们的列名具体是什么要求? 毕竟 结果表 { 日期, 星期N, 超库存次数 } 这个应该不是你想要的结果表的规格!

www说

请问某个门店+某个商品是指定的吗?
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答