需求:按天分組,求 A、B、C 三列中的全局最大值,並輸出該最大值發生的具體時間(而非分組邊界)。
ID Time A B C
1 2000-01-01 10:10:10 20 30 15
2 2000-01-01 11:20:20 30 15 40
3 2000-01-01 12:30:30 30 20 10
4 2000-01-02 10:10:10 30 40 25
5 2000-01-02 11:20:20 20 50 60
Time Max
2000-01-01 11:20:20 40
2000-01-02 11:20:20 60
WITH Ranked AS (
SELECT
Time,
GREATEST(A, B, C) AS Val,
ROW_NUMBER() OVER (PARTITION BY CAST(Time AS DATE) ORDER BY GREATEST(A, B, C) DESC) AS rn
FROM T
)
SELECT Time, Val AS MaxVal
FROM Ranked
WHERE rn = 1;
SQL Server 2022+ 支持
GREATEST;舊版本用CASE WHEN A>B AND A>C THEN A ... END。
Time 列,滿足「輸出對應時間」要求CREATE INDEX ix_date_abc ON T(CAST(Time AS DATE), A, B, C)