我需要以以下方式检索数据
Weeks delay_count
0 6
1 0
2 3
3 4
4 0
5 1
6 0
7 0
8 0
9 0
10 2
11 0
12 0
13 0
14 0
15 3
这里的周是从 0 到 15 的硬编码列,而 delay_count 是派生列。我有一个专栏delay_weeks
。基于此列中的值,我需要填充列中的值delay_count
(派生列)
delay_weeks
列值如下。
blank
blank
blank
2
10
5
blank
3
2
10
2
3
3
3
0
0
15
22
29
条件:
- 当
delay_weeks
为空白或 0 时,delay_count
列中的计数应为 1 - 什么时候
delay_weeks
是 3,那么在第delay_count
3 周下,该列中的计数应该是 1 - 什么时候
delay_weeks
是 10,那么在该delay_count
列中,第 10 周下的计数应该是 1 - 当
delay_weeks
大于或等于 15 时,delay_count
列中第 15 周下的计数应为 1。
我写了如下代码
SELECT "Weeks", a."delay_count"
FROM (SELECT LEVEL AS "Weeks"
FROM DUAL
CONNECT BY LEVEL <= 15) m,
(SELECT VALUE, COUNT (VALUE) AS "delay_numbers"
FROM (SELECT CASE
WHEN attr11.VALUE >= 15
THEN '15'
ELSE attr11.VALUE
END
VALUE
FROM docs,
(SELECT object_id, VALUE, attribute_type_id
FROM ATTRIBUTES
WHERE attribute_type_id =
(SELECT attribute_type_id
FROM attribute_types
WHERE name_display_code =
'ATTRIBUTE_TYPE.DELAY IN WEEKS')) attr11
WHERE docs.obj_id = attr11.object_id(+)
GROUP BY VALUE) a
WHERE m."Weeks" = a.VALUE(+)