是這樣的,我想要撈出下面資料裡面每年每月的最大日期
Groupby不起來,請問各位大神有什麼解法嗎?
資料格式
進貨單號 進貨日期 產品型號 數量
190814001 20190722 A0001 29
190828004 20190830 A0001 345
200803003 20200803 A0001 345
200821002 20200812 A0001 338
想要的結果
進貨單號 進貨日期 產品型號 數量
190814001 20190722 A0001 29
190828004 20190830 A0001 345
200821002 20200812 A0001 338
MSSQL寫法~參考~
create table Tmp(
進貨單號 nvarchar(50)
,進貨日期 nvarchar(50)
,產品型號 nvarchar(50)
,數量 int
);
insert into Tmp
values('190814001','20190722','A0001','29')
,('190828004','20190830','A0001','345')
,('200803003','20200803','A0001','345')
,('200821002','20200812','A0001','338');
select *
from Tmp
select 進貨單號
,進貨日期
,產品型號
,數量
from (
select Row_Number()over(PARTITION BY 產品型號,left(進貨日期,6) order by 進貨日期 desc) Sort
,*
from Tmp
) k
where Sort = 1
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=f00cedc1e3571f509a28cafcd190109b
用max吧
至於要不要DATE_FORMAT看你資料結構決定
SELECT *, MAX(DATE_FORMAT(date_column_name, '%y%m')) FROM `table`
GROUP BY DATE_FORMAT(date_column_name, '%y%m')
//https://www.w3schools.com/sql/func_mysql_max.asp
SELECT
YEAR(進貨日期) AS Y
,MONTH(進貨日期) AS M
,MAX(進貨日期)
FROM [dbo].進貨表
GROUP BY YEAR(進貨日期), MONTH(進貨日期)