亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求助一個查詢連續3天超庫存的sql語句寫法

求助一個查詢連續3天超庫存的sql語句寫法

元芳怎么了 2018-12-07 04:43:16
現有一個stock庫存表,共有四個字段:日期、門店、商品、超庫存次數(正整數,最小為0值),示例數據如下:日期 門店 商品 超庫存次數2011-05-01 001店 電視機 02011-05-01 002店 電視機 12011-05-01 003店 電視機 42011-05-02 001店 自行車 22011-05-02 002店 自行車 02011-05-03 001店 冰箱????72011-05-03 003店 冰箱??? 0... ... ... ...現在前端作了一個查詢,查詢條件是“開始日期、結束日期”兩個條件,希望查出來的結果是:每家店每個商品的“連續三天超庫次數”(只要"超庫存次數"字段>0則代表當天超庫了)。要求:從查詢開始日進行計算,查詢時要去除周六、周日,只計算周一至周五(循環計算),如果有連續三天"超庫存次數"均大于0則計為1,如此累計示例如下:查詢條件是從2011.05.03至2011.06.22,則某個門店+某個商品:2011.05.03 周二 超庫存次數>02011.05.04 周三 超庫存次數>02011.05.05 周四 超庫存次數>0 計為1次2011.05.06 周五 超庫存次數>02011.05.07 周六 跳過2011.05.08 周日 跳過2011.05.09 周一 超庫存次數>02011.05.10 周二 超庫存次數>0 計為2次,注意這個是跳過周六日后,上周五 +本周一 +本周二也算作1次2011.05.11 周三 超庫存次數=02011.05.12 周四 超庫存次數>02011.05.13 周五 超庫存次數>02011.05.14 周六 跳過2011.05.15 周日 跳過2011.05.16 周一 超庫存次數=02011.05.17 周二 超庫存次數>02011.05.18 周三 超庫存次數>02011.05.19 周四 超庫存次數>0 計為3次,前面幾個都沒有連續3天2011.05.20 周五 超庫存次數>0還請高手幫忙看下,非常感謝!
查看完整描述

10 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

寫存儲過程吧,先將記錄排個序,然后循環所有的記錄,自己來計算超出庫存的計數。

查看完整回答
反對 回復 2019-01-07
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

你要是把建表語句還有數據丟出來 還可以試試? 不然誰那么人才

查看完整回答
反對 回復 2019-01-07
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

多謝你的建議,我一會試試
查看完整回答
反對 回復 2019-01-07
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

試過了朋友,結果也不對。查不出數據來
查看完整回答
反對 回復 2019-01-07
?
森林海

TA貢獻2011條經驗 獲得超2個贊

試試這個sql文

--日期? CreateTime
--門店?shop?
--商品?goods
--超庫存次數 PerCount
SELECT temp.shop,temp.goods,ceiling(COUNT(1)*1.0/3) AS PerCount
FROM
(???????
?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
?????????)
????????)
??????? )?????
)
temp
GROUP BY temp.shop,temp.goods

查看完整回答
反對 回復 2019-01-07
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

我測試過,結果不對
查看完整回答
反對 回復 2019-01-07
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

你好,

先分析下你的源數據表的格式是

超庫存表 {?日期, 門店, 商品, 超庫存次數 }

請問有為源表設置集聚索引(主鍵)嗎?

?

然后你在說一下你具體需要得到的結果表的列數及他們的列名具體是什么要求?

畢竟

結果表 { 日期, 星期N, 超庫存次數 }

這個應該不是你想要的結果表的規格!

查看完整回答
反對 回復 2019-01-07
?
www說

TA貢獻1775條經驗 獲得超8個贊

請問某個門店+某個商品是指定的嗎?

查看完整回答
反對 回復 2019-01-07
  • 10 回答
  • 0 關注
  • 871 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號