मेरे पास 'स्कूल ईयर स्टार्टएंड' टेबल है

CREATE TABLE SchoolYearStartEnd (
    id INT PRIMARY KEY UNIQUE,
    StartDate DATE,
    EndDate DATE
);

और दूसरी 'स्कूल ईयर्स टीचिंग डेज' टेबल

CREATE TABLE SchoolYearsTeachingDays (
    aDate DATE PRIMARY KEY UNIQUE
);

जिसे मैं एक सीटीई से इस तरह की तारीखों से भरना चाहता हूं:

WITH RECURSIVE dates(x) AS (
 SELECT (SELECT StartDate FROM SchoolYearStartEnd)
  UNION ALL
 SELECT DATE(x, '+1 DAYS') FROM dates WHERE x < (SELECT EndDate FROM SchoolYearStartEnd)
 )
 SELECT * FROM dates WHERE CAST(STRFTIME('%w',x) AS INTEGER) > 0
;

मैंने यहां इस कोड के साथ प्रयास किया:

INSERT INTO SchoolYearsTeachingDays (aDate) VALUES (
  WITH RECURSIVE dates(x) AS (
   SELECT (SELECT StartDate FROM SchoolYearStartEnd)
    UNION ALL
   SELECT DATE(x, '+1 DAYS') FROM dates WHERE x < (SELECT EndDate FROM SchoolYearStartEnd)
   )
  SELECT * FROM dates WHERE CAST(STRFTIME('%w',x) AS INTEGER) > 0 -- To exclude Sundays.
 ;
);

लेकिन सफलता के बिना। मुझे ये त्रुटियां मिलती हैं:

Error: near "RECURSIVE": syntax error
Error: near ")": syntax error

तो मैं यहाँ क्या खो रहा हूँ?

बेस्ट, पाली

0
Pal Csanyi 25 जून 2018, 23:42

1 उत्तर

सबसे बढ़िया उत्तर

जब आप किसी SELECT क्वेरी से सम्मिलित कर रहे हों, तो आपको VALUES का उपयोग नहीं करना चाहिए:

INSERT INTO SchoolYearsTeachingDays (aDate)
WITH RECURSIVE dates(x) AS (...)
SELECT * FROM dates ...;
1
CL. 26 जून 2018, 00:00