如何返回每个部门的最大值的行,以及如果同一部门的两行或多行具有相同的值(包括结果中的那些行)?
例如,我有下表:
Name | Code | Date | Value |
---|---|---|---|
Finance | ABC12 | 2020-05-12 | 15 |
Finance | ABC12 | 2020-06-24 | 118 |
Marketing | BBG43 | 2020-05-12 | 12 |
Marketing | BBG43 | 2021-08-07 | 1 |
Tech | PKY76 | 2020-07-21 | 7 |
Tech | PKY76 | 2020-11-28 | 7 |
我希望返回每个部门具有最大值的行.如果部门在不同的日期具有相同的最大值,则返回所有这些天.
例如,我想要的输出是:
Name | Code | Date | Value |
---|---|---|---|
Finance | ABC12 | 2020-06-24 | 118 |
Marketing | BBG43 | 2020-05-12 | 12 |
Tech | PKY76 | 2020-07-21 | 7 |
Tech | PKY76 | 2020-11-28 | 7 |
到目前为止,我有这样的代码:
SELECT
Name
,Code
,MAX(Date)
,MAX(Value) AS Total
FROM Department
GROUP BY
Name
,Code
显然,这样做的问题是我不想只获得Max Date,但我不知道如何在不使用GROUP BY
的情况下将该日期包括在输出中.因此,我只获得每个部门的最新日期的结果,如果是同一部门的多行,则只包括一个.