我的表看起来像这样:
|ID|Dates|Is_Active|
|----|----|----|
|718844 |13/07/2023 18:00 - 13/07/2023 19:00| 0|
|718842 |13/07/2023 08:00 - 13/07/2023 15:00| 0|
|718844 |13/07/2023 06:00 - 13/07/2023 18:00| 0|
|718842 |13/07/2023 06:00 - 13/07/2023 08:00| 0|
|718842 |13/07/2023 15:00 - 13/07/2023 17:00| 0|
|718844 |13/07/2023 18:00 - 13/07/2023 19:00| 1|
|718844 |13/07/2023 06:00 - 13/07/2023 18:00| 1|
|718842 |13/07/2023 08:00 - 13/07/2023 10:00| 1|
|718842 |13/07/2023 13:00 - 13/07/2023 15:00| 1|
|718842 |13/07/2023 10:00 - 13/07/2023 13:00| 1|
|718842 |13/07/2023 06:00 - 13/07/2023 08:00| 1|
|718842 |13/07/2023 15:00 - 13/07/2023 17:00| 1|
字符串
我需要转换我的数据,以便在单独的列中显示活动/非活动日期。
|ID|Inactive|Active|
|----|----|----|
|718844 |13/07/2023 18:00 - 13/07/2023 19:00|13/07/2023 18:00 - 13/07/2023 19:00|
|718842 |13/07/2023 08:00 - 13/07/2023 15:00|13/07/2023 06:00 - 13/07/2023 18:00|
|718844 |13/07/2023 06:00 - 13/07/2023 18:00|13/07/2023 08:00 - 13/07/2023 10:00|
|718842 |13/07/2023 06:00 - 13/07/2023 08:00|13/07/2023 13:00 - 13/07/2023 15:00|
|718842 |13/07/2023 15:00 - 13/07/2023 17:00|13/07/2023 10:00 - 13/07/2023 13:00|
|718844 | |13/07/2023 06:00 - 13/07/2023 08:00|
|718844 | |13/07/2023 15:00 - 13/07/2023 17:00|
型
我试图使用枢轴,但它需要聚合,我不想要的。你知道我该怎么解决吗?
数据来源:
CREATE GLOBAL TEMPORARY TABLE my_gtt (id NUMBER
,dates VARCHAR2(200)
,is_active NUMBER
) ON COMMIT PRESERVE ROWS;
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 06:00 - 13/07/2023 08:00', 0);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 08:00 - 13/07/2023 15:00', 0);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 15:00 - 13/07/2023 17:00', 0);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 06:00 - 13/07/2023 08:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 10:00 - 13/07/2023 13:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 15:00 - 13/07/2023 17:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 13:00 - 13/07/2023 15:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718842, '13/07/2023 08:00 - 13/07/2023 10:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718844, '13/07/2023 06:00 - 13/07/2023 18:00', 0);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718844, '13/07/2023 06:00 - 13/07/2023 18:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718844, '13/07/2023 18:00 - 13/07/2023 19:00', 1);
INSERT INTO my_gtt (id, dates, is_active) VALUES (718844, '13/07/2023 18:00 - 13/07/2023 19:00', 0);
型
1条答案
按热度按时间ohtdti5x1#
使用
ROW_NUMBER
解析函数为每行id
和is_active
值提供一个唯一值,然后PIVOT
使用该唯一值,这样就不会有多个值被聚合:字符串
对于您的示例数据,输出:
| 不活动|活动| ACTIVE |
| --|--| ------------ |
| 2023年7月13日06:00 - 2023年7月13日08:00| 2023年7月13日06:00 - 2023年7月13日08:00| 13/07/2023 06:00 - 13/07/2023 08:00 |
| 2023年7月13日08:00 - 2023年7月13日15:00| 2023年7月13日08:00 - 2023年7月13日10:00| 13/07/2023 08:00 - 13/07/2023 10:00 |
| 13/07/2023 15:00 - 13/07/2023 17:00| 13/07/2023 10:00 - 13/07/2023 13:00| 13/07/2023 10:00 - 13/07/2023 13:00 |
| * 空 *| 13/07/2023 13:00 - 13/07/2023 15:00| 13/07/2023 13:00 - 13/07/2023 15:00 |
| * 空 *| 13/07/2023 15:00 - 13/07/2023 17:00| 13/07/2023 15:00 - 13/07/2023 17:00 |
| 2023年7月13日06:00 - 2023年7月13日18:00| 2023年7月13日06:00 - 2023年7月13日18:00| 13/07/2023 06:00 - 13/07/2023 18:00 |
| 2023年7月13日18:00 - 2023年7月13日19:00| 2023年7月13日18:00 - 2023年7月13日19:00| 13/07/2023 18:00 - 13/07/2023 19:00 |
fiddle