我希望有一位专家帮忙。本月的最后一天,在SQLPLUS中加上扭曲
在一个SQL SELECT语句中我试图去年每个月的数据得到最后一天。 例如,我很容易得到每个月的最后一天并将其加入到我的数据表中,但问题是,如果该月的最后一天没有数据,那么没有返回的数据。我需要的是让SELECT返回当月数据的最后一天。
这可能很容易做到,但说实话,我的大脑放屁开始受到伤害。
我附上了下面的选择,它适用于仅返回过去12个月中最后一天的数据。
在此先感谢您的帮助!
SELECT fd.cust_id,fd.server_name,fd.instance_name,
TRUNC(fd.coll_date) AS coll_date,fd.column_name
FROM super_table fd,
(SELECT TRUNC(daterange,'MM')-1 first_of_month
FROM (
select TRUNC(sysdate-365,'MM') + level as DateRange
from dual
connect by level<=365)
GROUP BY TRUNC(daterange,'MM')) fom
WHERE fd.cust_id = :CUST_ID
AND fd.coll_date > SYSDATE-400
AND TRUNC(fd.coll_date) = fom.first_of_month
GROUP BY fd.cust_id,fd.server_name,fd.instance_name,
TRUNC(fd.coll_date),fd.column_name
ORDER BY fd.server_name,fd.instance_name,TRUNC(fd.coll_date)
对于Oracle,您可以使用GROUP BY TO_CHAR(coll_date,'YYYYMM') – Rhose 2009-07-15 20:16:57