Использование суммы с несколькими внутренними объединениями - PullRequest
1 голос
/ 29 апреля 2019

У меня есть пара таблиц, из которых я хочу выбрать.Я также хочу использовать sum () для одной из таблиц.Вот что я получил до сих пор.

DROP TABLE ... IF EXISTS
CREATE TABLE ... IF EXISTS AS
    SELECT
        fbp.*
        bcs.yyyy_mm_dd,
        cspd.*,
    FROM xxx.fbp fbp
    INNER JOIN table2 st ON (fbp.id = st.xml_id)
    INNER JOIN (
        SELECT
            CASE
                WHEN (field1) IS NULL THEN 0
                ELSE SUM(field1)
            END AS field1
         FROM table2 bcs
         WHERE yyyy_mm_dd >= '2019-04-21'
         GROUP BY bcs.column_id
    ) AS bcs ON bcs.column_id = fbp.id
    INNER JOIN table3 cspd ON (fbp.id = cspd.id)
    WHERE bcs.yyyy_mm_dd >= '2019-04-21'
    AND cspd.yyyy_mm_dd >= '2019-04-21'
    AND (st.id IN (9)) AND (st.date IS NULL);

Когда я запускаю этот запрос, я получаю следующую ошибку.

Выражение отсутствует в ключе GROUP BY 'field1'.

Когда я добавляю field1 в GROUP BY, я получаю другую ошибку.

Я ищу, чтобы мой набор данных был суммой (field1), сгруппированной по hotel_idа затем другие метрики, которые я выбрал.Это должно дать мне ежедневную сумму вместе с некоторыми другими метаданными.Как этого достичь?

1 Ответ

0 голосов
/ 29 апреля 2019

Можете ли вы попробовать ниже.

DROP TABLE ... IF EXISTS
CREATE TABLE ... IF EXISTS AS
    SELECT
        fbp.*
        bcs.yyyy_mm_dd,
        cspd.*,
    FROM xxx.fbp fbp
    INNER JOIN table2 st ON (fbp.id = st.xml_id)
    INNER JOIN (
        SELECT
            column_id
            sum(CASE
                WHEN field1 IS NULL THEN 0
                ELSE field1
            END) AS field1
         FROM table2 bcs
         WHERE yyyy_mm_dd >= '2019-04-21'
         GROUP BY bcs.column_id
    ) AS bcs ON bcs.column_id = fbp.id
    INNER JOIN table3 cspd ON (fbp.id = cspd.id)
    WHERE bcs.yyyy_mm_dd >= '2019-04-21'
    AND cspd.yyyy_mm_dd >= '2019-04-21'
    AND (st.id IN (9)) AND (st.date IS NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...