我想计算的天数,有多少天仍然活跃的报价。
这是我的表格:
CREATE TABLE myTable(u_id, , offer, status,status_date) as
SELECT 1, 'Offer_1', 'Active', TO_DATE('2021/12/01 21:02:44', 'yyyy/mm/dd hh24:mi:ss')
FROM dual
UNION ALL
SELECT 1, 'Offer_1', 'Deactive', TO_DATE('2022/02/01 21:02:44', 'yyyy/mm/dd hh24:mi:ss') FROM dual
UNION ALL
SELECT 1, 'Offer_1','Active', TO_DATE('2022/03/01 21:02:44', 'yyyy/mm/dd hh24:mi:ss') FROM dual
UNION ALL
SELECT 1, 'Offer_1','Deactive' TO_DATE('2022/04/01 21:02:44', 'yyyy/mm/dd hh24:mi:ss') FROM dual
UNION ALL
SELECT 1, 'Offer_2','Active', TO_DATE('2022/12/30 21:02:44', 'yyyy/mm/dd hh24:mi:ss') FROM dual
这就是我的剧本:
select distinct u_id,offer_id,
trunc(nvl(case when status = 'Deactive' then status_date end),sysdate) -
trunc(case when status = 'Active' then status_date end) date_diff
from myTable
但它给了我错误的结果。
预期产出:
| 用户标识符|要约|总天数|
| - ------|- ------|- ------|
| 1个|报价_1|九十三|
| 1个|报价_2|三十一|
2条答案
按热度按时间xdnvmnnf1#
您可以按以下步骤操作:
结果:
ceil
用于将指定的数字向上舍入(本例中为天数)demo here
wixjitnu2#
假设"活动"和"停用"总是交替的,您可以使用
LEAD
来获得每个活动日期的描述日期。最后进行汇总和求和。演示:https://dbfiddle.uk/YDVTqEiR