此问题已在此处有答案:
List all days between two dates in Oracle(2个答案)
How do I generate rows of dates given a date and interval using Oracle SQL query?(2个答案)
18天前关闭
我是SQL世界的新手,我不太擅长日期。我需要帮助查询。我不知道如何把一周的日期分成几天。
像这样的table。
| ID|星历|数量|
| --|--|--|
| 1 |2019 - 09 - 24| 745 |
| 2 |2019 - 09 - 24| 353 |
| 3 |2023年10月1日| 442 |
我想要的是把一周分成几天,例如像这样。
| ID|星历|date_days|天|数量|
| --|--|--|--|--|
| 1 |2019 - 09 - 24| 2019 - 09 - 24|周日| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 25|周一| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 26|周二| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 27|周三| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 21 10:00:00|周四| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 21 10:00:00|周五| 745 |
| 1 |2019 - 09 - 24| 2019 - 09 - 21 00:00:00|周六| 745 |
| 2 |2019 - 09 - 24| 2019 - 09 - 24|周日| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 25|周一| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 26|周二| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 27|周三| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 21 10:00:00|周四| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 21 10:00:00|周五| 353 |
| 2 |2019 - 09 - 24| 2019 - 09 - 21 00:00:00|周六| 353 |
| 3 |2023年10月1日|2023年10月1日|周日| 442 |
| 3 |2023年10月1日|2023年10月2日|周一| 442 |
| 3 |2023年10月1日|2023年10月3日|周二| 442 |
| 3 |2023年10月1日|2023年10月4日|周三| 442 |
| 3 |2023年10月1日|2023年10月5日|周四| 442 |
| 3 |2023年10月1日|2023年10月6日|周五| 442 |
| 3 |2023年10月1日|2023年7月10日|周六| 442 |
2条答案
按热度按时间rjee0c151#
这是一个 row generator 的问题。这里有一个选择:
样本数据:
查询;请注意,您不应避免使用
distinct
关键字进行重复。它在小数据集上工作正常,但随着your_table_name
中行数的增加,查询的效果越来越差。接下来的一个应该表现得更好。o4tp2gmn2#
想解决这个问题,结果发现了这个。
http://sqlfiddle.com/#!4/4c28bc/9