【发布时间】:2014-11-05 11:42:02
【问题描述】:
在 Oracle ApEx 中,我有一个这样的表:
CREATE TABLE "ATTENDANCE_HOURS"
("ID" NUMBER NOT NULL ENABLE,
"PERSON_ID" NUMBER,
"PROJECT_ID" NUMBER,
"FROM_X" DATE NOT NULL ENABLE,
"TO_X" DATE NOT NULL ENABLE,
"NOTE" VARCHAR2(300),
"APPROVED" NUMBER DEFAULT 0 NOT NULL ENABLE,
"APPROVAL_NOTE" VARCHAR2(300),
"DAY" DATE NOT NULL ENABLE,
CONSTRAINT "CHECK_TIMES" CHECK (TO_CHAR(TO_X, 'HH24MI') > TO_CHAR(FROM_X, 'HH24MI')) ENABLE,
CONSTRAINT "ATTENDANCE_HOURS_PK" PRIMARY KEY ("ID")
USING INDEX ENABLE
)
注意:我无法更改表格。只是没有。 我需要为每个人选择他们每周工作多少小时。我已经选择了每天多少小时(感谢 StackOverflow),如下所示:
select
(MAX("TO_X") - MIN("FROM_X"))*24 -
(max(case when PROJECT_ID = 21 then to_x else to_date('01012000','DDMMYYYY') end) -
max(case when PROJECT_ID = 21 then from_x else to_date('01012000','DDMMYYYY') end))*24 AS TIME_SPENT
// project id = 21 is break
from #OWNER#.ATTENDANCE_HOURS
GROUP BY DAY
我想到的是,按周数对下一个条目进行分组并将整个内容放入 SUM(),但是,它不起作用,它说:不是单组分组函数。 或者我应该开始玩视图?
【问题讨论】:
-
不清楚这些列的含义。什么定义了一个小时的工作?每个项目每人每天一排吗?为什么你的特殊套管项目 ID 21?
-
@Ben b/c 项目 21 是休息时间,不计入工作时间。
标签: sql oracle select oracle-apex