Hi *!
This select returns null. It should return "2024×202401; 2024×202402"
Works on ever previous FB versions.
WITH idoszak AS
(SELECT i.nev kod, i.ntz_tol, i.ntz_ig, i.erv_tol dat_tol, i.erv_ig dat_ig, i.iktato_tol ikt_tol, i.iktato_ig ikt_ig
FROM fk_tabla_idoszak i
WHERE i.fk_tabla_fej_id = 1000 AND ((nev STARTING WITH '2024'))),
combine AS
(SELECT i.kod, i.ntz_tol, i.ntz_ig, i.dat_tol, i.dat_ig, i.ikt_tol, i.ikt_ig,
i2.kod i2_kod, i2.ntz_tol i2_ntz_tol, i2.ntz_ig i2_ntz_ig, i2.dat_tol i2_dat_tol, i2.dat_ig i2_dat_ig, i2.ikt_tol i2_ikt_tol, i2.ikt_ig i2_ikt_ig
FROM idoszak i
JOIN idoszak i2 ON i2.kod > i.kod),
overlap AS
(SELECT DISTINCT MINVALUE(kod, i2_kod) kod, MAXVALUE(kod, i2_kod) i2_kod,
NOT (
(COALESCE(ntz_tol, 'N') > COALESCE(i2_ntz_ig, 'Z') OR COALESCE(ntz_ig, 'Z') < COALESCE(i2_ntz_tol, 'N')) OR
(COALESCE(dat_tol, CAST('1900.01.01' AS DATE)) > COALESCE(i2_dat_ig, CAST('2100.12.31' AS DATE)) OR COALESCE(dat_ig, CAST('2100.12.31' AS DATE)) < COALESCE(i2_dat_tol, CAST('1900.01.01' AS DATE))) OR
(COALESCE(ikt_tol, 0) > COALESCE(i2_ikt_ig, 2147483647) OR COALESCE(ikt_ig, 2147483647) < COALESCE(i2_ikt_tol, 0))
) overlap
FROM combine)
SELECT LIST(kod || '×' || i2_kod, '; ')
FROM overlap
WHERE overlap
--SELECT * FROM overlap (no null in the resultset)
Run attached prepare.sql befure the select.
I'll send the FTP details for the database on request.
Thank you!
prepare.zip
Hi *!
This select returns null. It should return "2024×202401; 2024×202402"
Works on ever previous FB versions.
WITH idoszak AS
(SELECT i.nev kod, i.ntz_tol, i.ntz_ig, i.erv_tol dat_tol, i.erv_ig dat_ig, i.iktato_tol ikt_tol, i.iktato_ig ikt_ig
FROM fk_tabla_idoszak i
WHERE i.fk_tabla_fej_id = 1000 AND ((nev STARTING WITH '2024'))),
combine AS
(SELECT i.kod, i.ntz_tol, i.ntz_ig, i.dat_tol, i.dat_ig, i.ikt_tol, i.ikt_ig,
i2.kod i2_kod, i2.ntz_tol i2_ntz_tol, i2.ntz_ig i2_ntz_ig, i2.dat_tol i2_dat_tol, i2.dat_ig i2_dat_ig, i2.ikt_tol i2_ikt_tol, i2.ikt_ig i2_ikt_ig
FROM idoszak i
JOIN idoszak i2 ON i2.kod > i.kod),
overlap AS
(SELECT DISTINCT MINVALUE(kod, i2_kod) kod, MAXVALUE(kod, i2_kod) i2_kod,
NOT (
(COALESCE(ntz_tol, 'N') > COALESCE(i2_ntz_ig, 'Z') OR COALESCE(ntz_ig, 'Z') < COALESCE(i2_ntz_tol, 'N')) OR
(COALESCE(dat_tol, CAST('1900.01.01' AS DATE)) > COALESCE(i2_dat_ig, CAST('2100.12.31' AS DATE)) OR COALESCE(dat_ig, CAST('2100.12.31' AS DATE)) < COALESCE(i2_dat_tol, CAST('1900.01.01' AS DATE))) OR
(COALESCE(ikt_tol, 0) > COALESCE(i2_ikt_ig, 2147483647) OR COALESCE(ikt_ig, 2147483647) < COALESCE(i2_ikt_tol, 0))
) overlap
FROM combine)
SELECT LIST(kod || '×' || i2_kod, '; ')
FROM overlap
WHERE overlap
--SELECT * FROM overlap (no null in the resultset)
Run attached prepare.sql befure the select.
I'll send the FTP details for the database on request.
Thank you!
prepare.zip