MSSQL是這樣..
select *
from INVAB
where dateadd(m,-6,Convert(date,'20190101')) < Convert(date,出貨日)
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.該庫別在接著半年都沒出貨】?(因為我看你是寫出貨日,而不是品號最大出貨日或庫別最大出貨日)...
意思是如果你資料是明細檔,例如長這樣,
(假設A)那你還必須先做這動作:max(出貨日) group by 品號,才能繼續上面的步驟。這時候就建議用tag去做了,有需要的話如下:
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=244c7110ed9d467eccaf4674fdaf6084