Du kan gøre noget som nedenstående:
# table creation:drop table if exists test_table;create table test_table (din_dato dato, din_værdi int(11));insert into test_table (din_dato, din_værdi) værdier ('2020-01-01', 1);insert into test_table (din_dato, din_værdi) værdier ('2020-01-01', 2);insert into test_table (din_dato, din_værdi) værdier ('2020-01-03', 2);insert into test_table (din_dato, din_værdi) ) værdier ('2020-01-07', 3);insert into test_table (din_dato, din_værdi) værdier ('2020-01-08', 4);insert into test_table (din_dato, din_værdi) værdier ('2020-01- 08', 1);
Dette skaber en liste over stort set alle datoerne. Du filtrerer derefter efter de datoer, du er interesseret i, slutter dig til dit bord og din gruppe.
Du kan også erstatte datoerne i where-sætningen med underforespørgsler (min. og maks. dato for din tabel) for at gøre den dynamisk
Det er lidt af en løsning, men det virker.
vælg sbqry.base_date, sum(ifnull(t.your_value, 0))fra (vælg adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i *100 + t1.i*10 + t0.i) base_date from (vælg 0 i union vælg 1 union vælg 2 union vælg 3 union vælg 4 union vælg 5 union vælg 6 union vælg 7 union vælg 8 union vælg 9) t0, ( vælg 0 i fagforening vælg 1 fagforening vælg 2 fagforening vælg 3 fagforening vælg 4 fagforening vælg 5 fagforening vælg 6 fagforening vælg 7 fagforening 8 fagforening vælg 9) t1, (vælg 0 i fagforening vælg 1 fagforening 2 fagforening vælg 3 fagforening vælg 4 fagforening vælg 5 fagforeninger vælg 6 fagforeninger vælg 7 fagforeninger vælg 8 fagforeninger vælg 9) t2, (vælg 0 i fagforening vælg 1 fagforening vælg 2 fagforeninger vælg 3 fagforeninger vælg 4 fagforeninger 5 fagforeninger vælg 6 fagforeninger vælg 7 fagforeninger vælg 8 fagforeninger vælg 9) t3 , (vælg 0 i fagforening vælge 1 fagforening vælge 2 fagforening vælge 3 fagforening vælge 4 fagforening vælge 5 fagforening vælge 6 fagforening vælge 7 fagforening vælge 8 fagforening vælge 9) t4) sbqryleft join test_table t on base_date =t.your_datewhere s bqry.base_date mellem '2020-01-01' og '2020-01-08'gruppe efter sbqry.base_date;
input:
+------------+------------+| din_dato | din_værdi |+------------+------------+| 01-01-2020 | 1 || 01-01-2020 | 2 || 03-01-2020 | 2 || 2020-01-07 | 3 || 2020-01-08 | 4 || 2020-01-08 | 1 |+------------+------------+
output:
+-------------+------------------------------------- +| basisdato | sum(ifnull(t.din_værdi, 0)) |+------+------------------------ ------+| 01-01-2020 | 3 || 2020-01-02 | 0 || 03-01-2020 | 2 || 04-01-2020 | 0 || 2020-01-05 | 0 || 2020-01-06 | 0 || 2020-01-07 | 3 || 2020-01-08 | 5 |+------------+-------------------------------------+