日期的数值查询
请教下,有以下数据,请和如何实现查询最早日期以及最晚日期的数值?
事项 单价 日期
A001 2 2012-07-01
A001 2.5 2012-11-12
A001 2.8 2012-11-14
B001 1.5 2012-08-16
B001 1.5 2012-09-17
C001 1 2012-09-20
-----------------------
经查询,期初单价为最早日期显示的单价数值,期末单价为最后日期显示的单价数值,显示结果为下:
事项 期初单价 期末单价
A001 2 2.8
B001 1.5 1.5
C001 1 1
---------------------------
[解决办法]
--CREATE TABLE huang(事项 VARCHAR(10), 单价 DECIMAL(9,2), 日期 DATE)
--INSERT INTO huang
--SELECT 'A001', 2 , '2012-07-01'
--UNION ALL
--SELECT 'A001' , 2.5 , '2012-11-12'
--UNION ALL
--SELECT 'A001' , 2.8 , '2012-11-14'
--UNION ALL
--SELECT 'B001' , 1.5 , '2012-08-16'
--UNION ALL
--SELECT 'B001' , 1.5 , '2012-09-17'
--UNION ALL
--SELECT 'C001' , 1 , '2012-09-20'
WITH huang2 AS (
SELECT 事项,MAX(日期 )最大日期,MIN(日期)最小日期
FROM huang
GROUP BY 事项)
SELECT a.事项 ,MAX(CASE WHEN a.最小日期=b.日期 THEN 单价 END) 期初单价,MAX(CASE WHEN a.最大日期=b.日期 THEN 单价 END) 期末单价
FROM huang2 a INNER JOIN huang b ON a.事项=B.事项
GROUP BY a.事项
/*
事项 期初单价 期末单价
---------- --------------------------------------- ---------------------------------------
A001 2.00 2.80
B001 1.50 1.50
C001 1.00 1.00
警告: 聚合或其他 SET 操作消除了 Null 值。
(3 行受影响)
*/