具有对应列的列的最大值

MAX value of column with corresponding columns

我使用的是旧 SQL Server 2000。

这是一些示例数据:

ROOMDATE                rate    bus_id  quantity
2018-09-21 00:00:00.000  129    346686  2
2018-09-21 00:00:00.000  162    354247  36
2018-09-21 00:00:00.000  159    382897  150
2018-09-21 00:00:00.000  120    556111  25
2018-09-22 00:00:00.000  129    346686  8
2018-09-22 00:00:00.000  162    354247  86
2018-09-22 00:00:00.000  159    382897  150
2018-09-22 00:00:00.000  120    556111  25
2018-09-23 00:00:00.000  129    346686  23
2018-09-23 00:00:00.000  162    354247  146
2018-09-23 00:00:00.000  159    382897  9
2018-09-23 00:00:00.000  94     570135  23

基本上我想要的是每天的最大数量及其相应的费率和 bus_id。

例如,我想要上面示例数据中的以下行:

ROOMDATE                rate    bus_id  quantity
2018-09-21 00:00:00.000  159    382897  150
2018-09-22 00:00:00.000  159    382897  150
2018-09-23 00:00:00.000  162    354247  146

据我了解,SQL Server 2000 不支持 ROW_NUMBER。但是我们可以使用一个子查询来表达您的查询,该子查询可以找到每天的最大数量:

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT
        CONVERT(char(10), ROOMDATE, 120) AS ROOMDATE,
        MAX(quantity) AS max_quantity
    FROM yourTable
    GROUP BY CONVERT(char(10), ROOMDATE, 120)
) t2
    ON CONVERT(char(10), t1.ROOMDATE, 120) = t2.ROOMDATE AND
       t1.quantity = t2.max_quantity
ORDER BY
    t1.ROOMDATE;

Demo