iT邦幫忙

0

輸入日期抓取往後推半年資料 求助

sql

https://ithelp.ithome.com.tw/upload/images/20181225/20103088ufFlZ4HccT.jpg

請問
我想要輸入一個日期 可以抓取往後推半年沒有出貨的資料
比方我WHERE輸入 20190101 抓到的就是 第三筆跟第四筆
程式碼該如何撰寫,謝謝幫忙。

MSSQL

小魚 iT邦高手 1 級 ‧ 2018-12-25 15:39:26 檢舉
你到底是用什麼SQL ?
z22344566 iT邦新手 5 級 ‧ 2018-12-25 15:48:17 檢舉
已補充,謝謝。
3
純真的人
iT邦高手 1 級 ‧ 2018-12-25 15:27:44
最佳解答

MSSQL是這樣..

select *
from INVAB
where dateadd(m,-6,Convert(date,'20190101'))  < Convert(date,出貨日)

https://ithelp.ithome.com.tw/upload/images/20181225/20061369XBgimQSP67.png

0
patricktpe
iT邦新手 5 級 ‧ 2018-12-25 15:42:41

不錯的實用資訊

1
張小馬~
iT邦新手 4 級 ‧ 2018-12-25 16:37:47

SQL Server 2017

select *,
convert(varchar,cast(DATEADD(month,6,CONVERT(date,出貨日)) as date),111)
"最大出貨日+半年",
convert(varchar,cast(CONVERT(date,'20190101')             as date),111)
"設定日期"
from "INVAB"
where DATEADD(month,6,CONVERT(date,出貨日)) < CONVERT(date,'20190101')

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=953aa8430e4f624ae69d6c671db2c5b0

若資料單純你提供那樣,是還算簡單。但我對於你提到【半年沒有出貨的資料】這個定義有點疑慮,指的是【A.該品號在接著半年都沒出貨】還是【B.該庫別在接著半年都沒出貨】?(因為我看你是寫出貨日,而不是品號最大出貨日庫別最大出貨日)...

意思是如果你資料是明細檔,例如長這樣,
https://ithelp.ithome.com.tw/upload/images/20181225/20111566Ib1oaJkJiw.png

(假設A)那你還必須先做這動作:max(出貨日) group by 品號,才能繼續上面的步驟。這時候就建議用tag去做了,有需要的話如下:
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=244c7110ed9d467eccaf4674fdaf6084

(空白)搞笑了一下~

z22344566 iT邦新手 5 級 ‧ 2018-12-28 08:44:04 檢舉

謝謝您。

我要發表回答

立即登入回答