【问题标题】:Return rows for maximum column value having same value from another column从另一列返回具有相同值的最大列值的行
【发布时间】:2013-07-11 23:02:08
【问题描述】:

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

创建表#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的最大值的行。

【问题讨论】:

  • 到目前为止您尝试了什么?问题是什么,您是否遇到错误/
  • 我尝试使用 Select MAX(Number1), ID, Number2 from #temp。但它只返回一行。

标签: sql sql-server sql-server-2008


【解决方案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)

一切顺利, 迈克尔

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2019-05-31
      • 2017-12-24
      相关资源
      最近更新 更多