Проблема GROUP BY с несколькими вложенными операторами SELECT

У меня появляется всплывающее окно с синтаксической ошибкой каждый раз, когда я запускаю свой запрос.

Ошибка:

ORA-00937: not a single-group group function 00937. 00000 - "not a single-group group function"

Ниже мой код:

    SELECT
    d.*, >>>>SUM(L.ALLOCATED_QTY)<<<<
FROM
    alc_item_loc l
    RIGHT JOIN (
        SELECT
            c.* 
        FROM
            store s,
            (   
                SELECT
                    a.*,
                    b.location AS store_number
                FROM
                    fdt_map_cluster_location b,
                    (   
                        SELECT DISTINCT
                            ss.alloc_cluster_id,
                            ss.alloc_cluster_name,
                            ss.worksheet_id,
                            ss.sku
                        FROM
                            fdt_maptool_sas_data ss
                        WHERE
                            ss.sku IN (
                                1099866,
                                1099896,
                                1000898,
                                1000960,
                                1000988
                            )   
                            AND ss.order_no IS NOT NULL
                                AND alloc_cluster_name NOT LIKE '%DC Cluster%'
                        GROUP BY
                            ss.alloc_cluster_id,
                            ss.alloc_cluster_name,
                            ss.worksheet_id,
                            ss.sku
                    ) a 
                WHERE
                    b.cluster_id = a.alloc_cluster_id
                    AND b.location_type = 'S' 
            ) c 
        WHERE
            s.store = c.store_number
            AND s.store_close_date IS NULL
                AND s.district NOT IN (
                997,
                998,
                999 
            )   
                    AND s.store_open_date <= SYSDATE
    ) d ON l.item_id = d.sku
           AND l.location_id = d.store_number
    >>>GROUP BY xxxx <<<<<

Как видите, ошибка вызвана тем, что у меня есть агрегатная функция (сумма), и ее нужно сгруппировать.

Моя проблема в том, что я не знаю, нужно ли мне сгруппировать все в (D. *) или как?

Если мне нужно сгруппировать ВСЕ в (D. *), как мне это сделать правильно?

Я знаю, что это неправильный синтаксис, но, например, вот что я хочу сделать:

GROUP BY D.*

Но я не уверен, как это сгруппировать ???

Любая помощь приветствуется!

PS: «>>> <<<» нужны только для того, чтобы показать, в чем заключается моя ошибка.

Да, с точки зрения синтаксиса вам необходимо включить поле данных в select в group by. Запустите запрос без sum и group by, чтобы увидеть возвращенные имена полей данных.

kc2018 04.04.2018 22:51

@ kc2018 Большое спасибо! Я все еще работаю над процедурами отладки. Это был хороший трюк!

alex_fields1 04.04.2018 23:03
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
194
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучше всего сгруппировать внутри подзапроса:

SELECT
    d.*, l._sum
FROM
    alc_item_loc l
    RIGHT JOIN (
        select l.item_id, l.location_id, SUM(L.ALLOCATED_QTY) _sum from (
            SELECT
                c.* 
                ....
                ....
                ....
                        AND s.store_open_date <= SYSDATE
        )l
        group by  l.item_id, l.location_id
    ) d ON l.item_id = d.sku
           AND l.location_id = d.store_number

Другие вопросы по теме