选择具有多个最大值的行

时间:2014-02-24 22:52:15

标签: sql sql-server max

对于每个订单号,我需要选择最大记录,然后选择每条记录的最大数量。

QueryResults

我只想要一行,显示出来。

Results

到目前为止,这是我的代码,如何选择我需要的内容?

SELECT number, record, order
FROM Table1

4 个答案:

答案 0 :(得分:2)

如果数字并不总是增加,因此每个记录组中可能有不同的MAx,你必须分两步完成,即首先得到MAX(记录),然后得到MAX(数字)。

SELECT T.[Order], Max(Number) AS MaxNumber, MaxRecord
FROM
(
    SELECT [Order], Max(Record) AS MaxRecord
    FROM Table1
    GROUP By [ORDER]
) T
INNER JOIN Table1 T1 ON T.[Order] = T1.[Order] AND T.MaxRecord = T1.Record
GROUP By [ORDER]

答案 1 :(得分:0)

订单确实不是一个好的列名,因为它是一个保留字。

SELECT max(number), max(record), order
FROM Table1
group by order

这可能不对,我需要澄清一下。您的问题有点令人困惑......这将返回每个订单号的最大数量和记录。您是否在参考最大数量时寻找最大记录? IE:

555 777 1

666 555 1

在这种情况下,您希望看到666 777 1还是555 777 1?

答案 2 :(得分:0)

假设您的表名为Table1,以下内容应该可以为您提供所需内容:

SELECT  MAX(number),
        A.record,
        [order]
  FROM  Table1 A
    INNER JOIN (  SELECT  MAX(record) record
                    FROM  Table1) B ON A.record = b.record
  GROUP BY A.record, [order]

这将有效地找到最大record,然后返回此number的最大record

答案 3 :(得分:0)

嗨,这是获得结果的另一种方法

select MAX(t.number),MAX(t.record),t.ORDERNo from @table t
INNER JOIN @table tt
ON tt.ORDERNo = t.ORDERNo
AND tt.Number = t.Number
AND t.Record = tt.Record
GROUP BY t.ORDERNo