对应列的最大值

时间:2018-09-12 14:22:39

标签: sql-server-2000

我正在使用旧的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

1 个答案:

答案 0 :(得分:1)

据我了解,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;

enter image description here

Demo