[英]How to convert dates to date format and sort data by date in Oracle SQL
我正在尝试创建一个条形图,但是 X 轴日期与我当前的代码不符。 我知道我必须将 to_ char 设置为 to _date 但不确定如何操作,因为我还需要日期作为 char 以及绑定变量。
select project_name, Dates, sum(records_number) as
from (
select project_name,
case
when :P33_Date_Range = 'Monthly' then
to_char(date_sys, 'Month')
when :P33_Date_Range = 'Daily' then
to_char(date_sys, 'DD-Mon-YYYY')
when :P33_Date_Range = 'Weekly' then
to_char(TRUNC(date_sys, 'IW'), 'DD-Mon-YYYY')
end as Dates, date_sys, records_number
from BATCH
WHERE date_sys BETWEEN TO_DATE('01/01/2022') AND TO_DATE('01/01/2023')
) my_records
group by project_name, Dates
order by project_name, Dates
;
我知道我必须将 to_ char 设置为 to _date 但不确定如何操作,因为我还需要日期作为 char 以及绑定变量。
将日期截断到子查询中的适当范围,然后在聚合后使用它来排序并格式化外部查询中的日期:
SELECT project_name,
TO_CHAR(date_sys, 'DD-Mon-YYYY') AS dates,
SUM(records_number) AS total
FROM (
SELECT project_name,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN TRUNC(date_sys, 'MM')
WHEN 'Daily'
THEN TRUNC(date_sys, 'DD')
WHEN 'Weekly'
THEN TRUNC(date_sys, 'IW')
END AS date_sys,
records_number
FROM BATCH
WHERE date_sys >= DATE '2022-01-01'
AND date_sys < DATE '2023-01-01'
)
GROUP BY project_name, date_sys
ORDER BY project_name, date_sys;
如果您希望月份格式不同,则:
SELECT project_name,
TO_CHAR(
date_sys,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN 'Month'
ELSE 'DD-Mon-YYYY'
END
) AS dates,
SUM(records_number) AS total
FROM (
SELECT project_name,
CASE :P33_Date_Range
WHEN 'Monthly'
THEN TRUNC(date_sys, 'MM')
WHEN 'Daily'
THEN TRUNC(date_sys, 'DD')
WHEN 'Weekly'
THEN TRUNC(date_sys, 'IW')
END AS date_sys,
records_number
FROM BATCH
WHERE date_sys >= DATE '2022-01-01'
AND date_sys < DATE '2023-01-01'
)
GROUP BY project_name, date_sys
ORDER BY project_name, date_sys;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.