[英]How to make a query of the max month/year of a group of columns
我真的不知道如何進行mysql查詢,以獲取最新月+年的所有數據(列)。
更具體一點,我需要對列進行分組(描述,數據1,數據2,數據3),並且僅獲得具有最高月份+年份的列。
該表包含如下數據:
description data1 data2 data3 year month adddate
desc1 0 7 1 2019 5 2019-05-23
desc2 0 7 1 2019 5 2019-05-23
desc3 1 7 1 2019 5 2019-05-23
desc4 0 2 1 2018 12 2019-05-23
我已經嘗試在月份,年份和日期上使用max。
select description, data1, data2, data3, max(year) as year, max(month) as month, max(adddate) as adddate
from tabledata
group by description, data1, data2, data3
但是由於這個即時消息,因為月份os desc2是6,所以最大寄存器是desc2,而月份12是不正確的。
您需要獲得一個表達式的最大值,例如:
100 * year + month
要么
12 * year + month
這樣做:
select *
from tabledata
where 100 * year + month = (
select max(100 * year + month)
from tabledata
)
參見演示 。
結果:
> description | data1 | data2 | data3 | year | month | adddate
> :---------- | ----: | ----: | ----: | ---: | ----: | :---------
> desc1 | 0 | 7 | 1 | 2019 | 5 | 23/05/2019
> desc2 | 0 | 7 | 1 | 2019 | 5 | 23/05/2019
> desc3 | 1 | 7 | 1 | 2019 | 5 | 23/05/2019
您需要找到年份和月份的最大組合(MaxYearMonth),然后再次連接到表中以查找與該MaxYearMonth匹配的所有行。 這是SQL Server的解決方案...
IF OBJECT_ID('tempdb.dbo.#tabledata', 'U') IS NOT NULL DROP TABLE #tabledata;
CREATE TABLE #tabledata
(
description VARCHAR(10)
, data1 INT
, data2 INT
, data3 INT
, year INT
, month INT
, adddate DATE
);
INSERT INTO #tabledata VALUES ('desc1', 0, 7, 1, 2019, 5, '2019-05-23')
INSERT INTO #tabledata VALUES ('desc2', 0, 7, 1, 2019, 5, '2019-05-23')
INSERT INTO #tabledata VALUES ('desc3', 1, 7, 1, 2019, 5, '2019-05-23')
INSERT INTO #tabledata VALUES ('desc4', 0, 2, 1, 2018, 12, '2019-05-23')
select a.description, a.data1, a.data2, a.data3
from #tabledata a
inner join
(
select max(convert(char(4), year) + right('0' + convert(varchar(2), month), 2)) as [MaxYearMonth]
from #tabledata
) b on convert(char(4), a.year) + right('0' + convert(varchar(2), a.month), 2) = b.MaxYearMonth
產生這個...
description data1 data2 data3
----------- ----------- ----------- -----------
desc1 0 7 1
desc2 0 7 1
desc3 1 7 1
單擊此處查看其運行情況。
您提到“ mysql”,因此,如果您確實在使用mySQL,則語法可能需要稍作更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.