該表如下所示:
--- ------------ ------------ ---------
id | start_date | end_date | amount |
--- ------------ ------------ ---------
1 | 2021-01-01 | 2021-01-07 | 100 |
--- ------------ ------------ ---------
我想將上面的表格更改為以下內容。
--- ------------ ------------ -------- ---------------
id | start_date | end_date | amount | operation_date|
--- ------------ ------------ -------- ---------------
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-01 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-02 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-03 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-04 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-05 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-06 |
1 | 2021-01-01 | 2021-01-07 | 100 | 2021-01-07 |
--- ------------ ------------ -------- ---------------
我想根據開始日期和結束日期的范圍將操作日期排成一行并輸入相同的資訊。
你能幫我嗎?我做了很多搜索,但找不到合適的答案。
uj5u.com熱心網友回復:
我認為你可以使用RECURSIVE CTE像:
WITH RECURSIVE cte AS (
SELECT id, start_date, end_date, amount, start_date AS operation_date
FROM table1
UNION ALL
SELECT id, start_date, end_date, amount, operation_date INTERVAL 1 DAY
FROM cte
WHERE operation_date INTERVAL 1 DAY <= end_date)
SELECT *
FROM cte ;
ID 開始日期 結束日期 數量 操作日期 1 2021-01-01 2021-01-07 100 2021-01-01 1 2021-01-01 2021-01-07 100 2021-01-02 1 2021-01-01 2021-01-07 100 2021-01-03 1 2021-01-01 2021-01-07 100 2021-01-04 1 2021-01-01 2021-01-07 100 2021-01-05 1 2021-01-01 2021-01-07 100 2021-01-06 1 2021-01-01 2021-01-07 100 2021-01-07
這是一個演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328745.html
下一篇:直接在mysql中插入后計算值
