Sql 从另一列返回具有相同值的最大列值行

Sql 从另一列返回具有相同值的最大列值行,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个数据库表,如下所示: 创建表tempID INT、Number1 INT、Number2 INT 插入到temp111、123、10中 插入temp111、223、10中 插入到temp111、323、10中 插入temp112、123、11 插入temp112、223、11 插入temp112、333、11 插入temp113、124、12 插入temp113、126、12 插入temp114、128、121中 我一直在研究一个问题,但仍然没有运气。我希望返回以下结果: 身份证号码1号

我有一个数据库表,如下所示:

创建表tempID INT、Number1 INT、Number2 INT

插入到temp111、123、10中

插入temp111、223、10中

插入到temp111、323、10中

插入temp112、123、11

插入temp112、223、11

插入temp112、333、11

插入temp113、124、12

插入temp113、126、12

插入temp114、128、121中

我一直在研究一个问题,但仍然没有运气。我希望返回以下结果:

身份证号码1号码2

11132310

112 333 11

113 126 12

114 128 121

在结果集中,对于相同的ID值,需要返回最大值为第1列的行

SELECT ID, Max(Number1) as Number1, Number2 FROM #temp group by ID, Number2
我相信你是在寻找集体条款。它返回以下内容:

111 323 10
112 333 11
113 126 12
114 128 121
谢谢你@MichaelMoreno指出这一点。我认为这是OP方面的一个输入错误,我没有将其作为解决方案发布。他真的在问选择的方法。以下是更正后的代码:

Create table #temp(ID INT, Number1 INT, Number2 INT)

INSERT INTO #temp values(111, 123, 10)

INSERT INTO #temp values(111, 223, 10)

INSERT INTO #temp values(111, 323, 10)

INSERT INTO #temp values(112, 123, 11)

INSERT INTO #temp values(112, 223, 11)

INSERT INTO #temp values(112, 333, 11)

INSERT INTO #temp values(113, 124, 12)

INSERT INTO #temp values(113, 126, 12)

INSERT INTO #temp values(114, 128, 121)

此SQL修复了您的SQL:-并且我认为返回了您想要的答案:

DECLARE @temp table (ID INT, Number1 INT, Number2 INT);
INSERT INTO @temp (ID,Number1, Number2) VALUES (111, 123, 10)
INSERT INTO @temp (ID,Number1, Number2) VALUES (111, 223, 10)
INSERT INTO @temp (ID,Number1, Number2) VALUES (111, 323, 10)
INSERT INTO @temp (ID,Number1, Number2) VALUES (112, 123, 11)
INSERT INTO @temp (ID,Number1, Number2) VALUES (112, 223, 11)
INSERT INTO @temp (ID,Number1, Number2) VALUES (112, 333, 11)
INSERT INTO @temp (ID,Number1, Number2) VALUES (113, 124, 12)
INSERT INTO @temp (ID,Number1, Number2) VALUES (113, 126, 12)
INSERT INTO @temp (ID,Number1, Number2) VALUES (114, 128, 121)


SELECT DISTINCT T1.ID, T1.Number1, T1.Number2
FROM @temp T1
JOIN @temp T2 ON T1.ID = T2.ID AND T1.Number1=(SELECT MAX(Number1) FROM @temp T3 WHERE T3.ID=T1.ID)
祝你一切顺利,
迈克尔

到目前为止,你尝试了什么?问题是什么,您是否遇到了错误/我尝试使用temp中的Select MAXNumber1,ID,Number2。但它只返回一行。