ORACLE 算每日每种物品的数量
表 字段1 字段2 字段3
时间 物品 数量
2013-9-20 13:00:00 物品1 3
2013-9-20 14:00:00 物品1 5
2013-9-20 17:00:00 物品1 7
2013-9-20 13:00:00 物品2 3
2013-9-20 14:00:00 物品2 5
2013-9-20 17:00:00 物品2 7
2013-9-20 13:00:00 物品3 3
2013-9-20 14:00:00 物品3 5
2013-9-20 17:00:00 物品3 7
怎么算每天每种物品时间最早的数量和时间最晚的数量,写出两个SQL
------解决方案--------------------最早:
SELECT A.物品,TO_CHAR(A.时间,'yyyymmdd')日期, SUM(A.数量)
FROM TABLE A,
(SELECT 物品,TO_CHAR(时间,'yyyymmdd')日期, MIN(时间)时间 FROM TABLE GROUP BY 物品,TO_CHAR(时间,'yyyymmdd')) B
WHERE A.物品= B.物品
AND A.时间= B.时间
AND A.日期=B.日期
GROUP BY A.物品,TO_CHAR(A.时间,'yyyymmdd')
最晚:
SELECT A.物品,TO_CHAR(A.时间,'yyyymmdd')日期, SUM(A.数量)
FROM TABLE A,
(SELECT 物品,TO_CHAR(时间,'yyyymmdd')日期, MAX(时间)时间 FROM TABLE GROUP BY 物品,TO_CHAR(时间,'yyyymmdd')) B
WHERE A.物品= B.物品
AND A.时间= B.时间
AND A.日期=B.日期
GROUP BY A.物品,TO_CHAR(A.时间,'yyyymmdd')
------解决方案----------------------最晚
select sum(数量) from
(select tempMaro2.*,row_number() over(partition by 物品 order by 时间 desc) px from tempMaro2)
where px = 1
--最早
select sum(数量) from
(select tempMaro2.*,row_number() over(partition by 物品 order by 时间) px from tempMaro2)
where px = 1
------解决方案--------------------上面我发的没写完 稍等
------解决方案----------------------最晚
select * from
(select tempMaro2.*,row_number() over(partition by 物品,trunc(时间) order by 时间 desc) px from tempMaro2)
where px = 1;
--最早
select * from
(select tempMaro2.*,row_number() over(partition by 物品,trunc(时间) order by 时间) px from tempMaro2)
where px = 1;
------解决方案-------------------- WITH TABLEA AS &n