sqlite несколько условий запроса - PullRequest
0 голосов
/ 07 марта 2019

Я искал, но не могу найти правильный ответ, и я хожу по кругу.У меня

CREATE TABLE History (yr Int, output Int, cat Text);
yr          output      cat
----------  ----------  ----------
2015        10          a
2016        20          a
2017        30          a
2018        50          a
2019        70          a
2015        100         b
2016        200         b
2017        300         b
2018        500         b
2019        700         b
2015        1000        c
2016        2000        c
2017        3000        c
2018        5000        c
2019        7000        c
2015        10000       d
2016        20000       d
2017        30000       d
2018        50000       d
2019        70000       d

Я создал два представления

CREATE VIEW Core AS select  * from History where cat = "c" or cat = "d";

CREATE VIEW Plus AS select  * from History where cat = "a" or cat = "b";

Мой запрос

select distinct yr, sum(output), (select sum(output) from core  group by yr) as _core, (select sum(output) from plus  group by yr) as _plus from history group by yr;

yr          sum(output)  _core       _plus
----------  -----------  ----------  ----------
2015        11110        11000       110
2016        22220        11000       110
2017        33330        11000       110
2018        55550        11000       110
2019        77770        11000       110

Каждый из отдельных запросов работает, но столбцы _core и _plusнеправильно, когда все это вместе.Как мне подойти к этому, пожалуйста.

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете сгенерировать ожидаемый результат без просмотра, используя один запрос с условным агрегированием:

SELECT
    yr,
    SUM(output) AS sum_output,
    SUM(CASE WHEN cat IN ('c', 'd') THEN output ELSE 0 END) AS _core,
    SUM(CASE WHEN cat IN ('a', 'b') THEN output ELSE 0 END) AS _plus
FROM History
GROUP BY
    yr;

Если вы действительно хотите, чтобы ваш текущий подход работал, одним из способов было бы просто объединить двапросмотров по годам.Но это оставило бы открытой возможность того, что каждое представление не могло бы присутствовать каждый год.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...