雖然以下一些需要核心標準SQL外部的秋天,他們是完全標準的SQL功能(例如,行構造函數是一個完整的SQL-92功能,熱膨脹係數是一個完整的SQL- 99功能等),並確實可以在某些產品(如SQL Server和Oracle)中找到:
WITH MyTable (my_Number, my_Time, Price)
AS
(
SELECT my_Number, CAST(my_Time AS DATE),
CAST(Price AS DECIMAL(5, 2))
FROM (
VALUES (100, '2010-08-10', 10),
(100, '2010-08-12', 15),
(160, '2010-08-10', 10),
(200, '2010-08-10', 12),
(210, '2010-08-11', 13),
(300, '2010-08-11', 14),
(350, '2010-08-10', 16)
) AS MyTable (my_Number, my_Time, Price)
), Ranges (NumberRange, range_start, range_end)
AS
(
SELECT NumberRange, range_start, range_end
FROM (
VALUES (1, 100, 200),
(2, 200, 300),
(3, 300, 400),
(4, 0, 400)
) AS Ranges (NumberRange, range_start, range_end)
),
RangesMaxTimes (NumberRange, range_start, range_end, max_time)
AS
(
SELECT R1.NumberRange,
R1.range_start, R1.range_end,
MAX(M1.my_Time) AS max_time
FROM MyTable AS M1
INNER JOIN Ranges AS R1
ON R1.range_start <= M1.my_Number
AND M1.my_Number < R1.range_end
GROUP
BY R1.NumberRange, R1.range_start, R1.range_end
)
SELECT R1.NumberRange, M1.my_Time, M1.Price
FROM MyTable AS M1
INNER JOIN RangesMaxTimes AS R1
ON R1.range_start <= M1.my_Number
AND M1.my_Number < R1.range_end
AND M1.my_Time = R1.max_time;
這可能因平臺而異。你使用什麼樣的SQL? – kbrimington 2010-08-11 21:31:44