0

我有一个如下的数据库表:

创建表 #temp(ID INT, Number1 INT, Number2 INT)

插入#temp(111、123、10)

插入#temp(111、223、10)

插入 #temp(111, 323, 10)

插入#temp(112、123、11)

插入#temp(112、223、11)

插入#temp(112、333、11)

插入#temp(113、124、12)

插入#temp(113、126、12)

插入#temp(114、128、121)

我一直在进行查询,但仍然没有运气。我正在寻找返回以下结果:

身份证号码 1 号码 2

111 323 10

112 333 11

113 126 12

114 128 121

在结果集中需要为相同的 ID 值返回列 Number1 的最大值的行。

4

2 回答 2

1

此 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)

一切顺利,迈克尔

于 2013-07-11T23:15:20.880 回答
0
SELECT ID, Max(Number1) as Number1, Number2 FROM #temp group by ID, Number2

我相信您正在寻找该GROUP条款。它返回这个:

111 323 10
112 333 11
113 126 12
114 128 121

感谢@MichaelMoreno 指出这一点。我认为这是 OP 的错字,我没有将其发布为解决方案。他真的是在问路SELECT。这是更正后的代码:

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)
于 2013-07-11T23:09:01.053 回答