递归SQL示例

递归SQL的写法
. Problem
Have table of sales per working day.
Need table of sales per calendar day.

CREATE TABLE Sales(day VARCHAR(10), date DATE, amount INTEGER);
INSERT INTO Sales VALUES('Friday','2006-05-12',30);
INSERT INTO Sales VALUES('Monday','2006-05-15',20);
INSERT INTO Sales VALUES('Tuesday','2006-05-16',15);
INSERT INTO Sales VALUES('Wednesday','2006-05-17',25);
INSERT INTO Sales VALUES('Thursday','2006-05-18',31);
INSERT INTO Sales VALUES('Friday','2006-05-19',33);
INSERT INTO Sales VALUES('Monday','2006-05-22',11);
INSERT INTO Sales VALUES('Tuesday','2006-05-23',18);

Select * from Sales;
 DAY       DATE       AMOUNT
 --------- ---------- ------
 Friday    2006-05-12     30
 Monday    2006-05-15     20
 Tuesday   2006-05-16     15
 Wednesday 2006-05-17     25
 Thursday  2006-05-18     31
 Friday    2006-05-19     33
 Monday    2006-05-22     11
 Tuesday   2006-05-23     18

 
WITH rec (dt)
AS (
    VALUES (DATE ('2006-05-12'))
    UNION ALL
    SELECT dt + 1 DAY
    FROM rec
    WHERE dt < DATE ('2006-05-23')
    )
SELECT DAYNAME(rec.dt) AS day
    ,rec.dt AS DATE
    ,COALESCE(amount, 0) AS sales
FROM rec
LEFT OUTER JOIN sales ON rec.dt = sales.DATE
ORDER BY dt

把周六,周日的数据给补上了

 DAY       DATE       SALES
 --------- ---------- -----
 Friday    2006-05-12    30
 Saturday  2006-05-13     0
 Sunday    2006-05-14     0
 Monday    2006-05-15    20
 Tuesday   2006-05-16    15
 Wednesday 2006-05-17    25
 Thursday  2006-05-18    31
 Friday    2006-05-19    33
 Saturday  2006-05-20     0
 Sunday    2006-05-21     0
 Monday    2006-05-22    11
 Tuesday   2006-05-23    18
请使用浏览器的分享功能分享到微信等