gpt4 book ai didi

SQL Server 获取列不在 Group By 子句中?

转载 作者:行者123 更新时间:2023-12-03 02:59:39 25 4
gpt4 key购买 nike

如何从该表中得到以下结果?

ID1|ID2| Date  
----------------------
1 | 1 | 01-01-2014
1 | 2 | 02-01-2014
2 | 3 | 03-01-2014

我想获取按 ID1 分组时的最大日期的 ID1 和 ID2

结果:

1,2  
2,3

我的代码:

SELECT 
ID1, MAX(DATE)
FROM
Table
GROUP BY
ID1

我需要类似的东西

SELECT 
ID1, ID2, MAX(DATE)
FROM
Table
GROUP BY
ID1

有人可以帮助我吗?

最佳答案

共有三种方法可以做到这一点。

一、子查询:

SELECT t1.ID1, t1.ID2, t2.MAX_DATE
FROM Table t1
INNER JOIN (
SELECT ID1, MAX(DATE) AS "MAX_DATE" FROM Table GROUP BY ID1) t2
ON t1.ID1 = t2.ID2

或者,如果您使用的是 SQL Server 2005+、最新版本的 Oracle 或 PostgreSQL(以及除 MySQL 或 MariaDB 以外的最新版本),则可以使用 OVER() 子句:

SELECT ID1,
ID2,
MAX(DATE) OVER(PARTITION BY ID1)
FROM Table

或者您可以使用相关子查询:

SELECT t1.ID1, 
t1.ID2,
(SELECT MAX(DATE) FROM Table WHERE ID1 = t1.ID1)
FROM Table t1

关于SQL Server 获取列不在 Group By 子句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com