问题描述
我正在尝试创建一个条形图(使用 Oracle Apex v21.1.0),显示按星期几细分的员工缺勤情况。即一周中每一天的缺勤次数。 我在按时间顺序显示一周中的 7 个小节时遇到问题。 这是我的 sql:
-- sql for chart showing count of days absent for each day of week
select
TO_CHAR(ABD_DATE,'D') as Day_Index_DOW,TO_CHAR(ABD_DATE,'DY') as Day_Name_DOW,COUNT(TO_CHAR(ABD_DATE,'D')) as Count_DOW
from F_ABSENT_DAYS
where ABD_EMP_ID = :P410_EMP_ID
group by TO_CHAR(ABD_DATE,'D'),'DY')
order by TO_CHAR(ABD_DATE,'D')
图表设置为:
Series Name is set to Day_Index_DOW
Label is set to Day_Name_DOW
Value is set to Count_DOW
这会生成 7 个柱状图,其中包含正确的星期几。 问题是,它们按字母顺序排序(周五、周一、周六...)。 我正在尝试按时间顺序排列它们(星期一、星期二、星期三...)。
解决方法
我创建了示例数据来演示您的示例。 SQL 查询:
select day_number,day_name,sum(count_dow)
from (
select TO_CHAR(sysdate,'D') day_number,TO_CHAR(sysdate,'DY') day_name,5 count_dow
from dual
union
select TO_CHAR(sysdate+1,TO_CHAR(sysdate+1,4 count_dow
from dual
union
select TO_CHAR(sysdate+2,TO_CHAR(sysdate+2,'DY')day_name,3 count_dow
from dual
union
select TO_CHAR(sysdate+3,TO_CHAR(sysdate+3,2 count_dow
from dual
union
select TO_CHAR(sysdate+4,TO_CHAR(sysdate+4,1 count_dow
from dual
union
select TO_CHAR(sysdate+5,TO_CHAR(sysdate+5,4 count_dow
from dual
union
select TO_CHAR(sysdate+6,TO_CHAR(sysdate+6,8 count_dow
from dual
union
select TO_CHAR(sysdate+3,8 count_dow
from dual
)
group by day_number,day_name
order by day_number;
我设置了标签和值属性:
根据我的数据库的 NLS_TERRITORY 参数,一周的第一天是星期日,可能因您而异。