iT邦幫忙

0

SQL撈取當年月最大日期

  • 分享至 

  • xImage

是這樣的,我想要撈出下面資料裡面每年每月的最大日期
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

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
純真的人
iT邦大師 1 級 ‧ 2022-06-16 20:08:45
最佳解答

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
https://ithelp.ithome.com.tw/upload/images/20220616/20061369E9cSnde5NM.png

1
firecold
iT邦新手 1 級 ‧ 2022-06-16 17:11:47

用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
0
asd3733653
iT邦新手 2 級 ‧ 2022-06-16 17:15:34
SELECT 
  YEAR(進貨日期) AS Y
  ,MONTH(進貨日期) AS M
  ,MAX(進貨日期)
  FROM [dbo].進貨表
  GROUP BY YEAR(進貨日期), MONTH(進貨日期)

我要發表回答

立即登入回答