Ошибка запроса не одной групповой функции - PullRequest
0 голосов
/ 09 марта 2020

вот мой запрос, он показывает "не групповая функция одной группы", пожалуйста, исправьте мой запрос

SELECT gc.CHART_OF_ACCOUNT_CODE,
       gc.DESCRIPTION,
       GVA.DIVISION,
       SUM(SUM(gva.debit) - SUM(gva.credit)) Allocation,
       get_data_value_desc(gva.DIVISION, 105) VALUE_SET_DESCRIPTION
  FROM GL_VOUCHER_ALLOCATION gva, gl_chart_of_accounts gc
 WHERE GVA.ACCOUNT_ID = GC.CHART_OF_ACCOUNT_ID
   AND Gc.ALLOCATION_ID = Gva.ALLOCATION_TYPE 
HAVING SUM(gva.debit) - SUM(gva.credit) > 0
 GROUP BY gc.CHART_OF_ACCOUNT_CODE, gc.DESCRIPTION, GVA.DIVISION

Ответы [ 4 ]

0 голосов
/ 09 марта 2020

спасибо за ответы уважаемый сэр, теперь этот код работает нормально

Select Gc.Chart_of_account_code,
         Gc.Description,
         Gva.Division,
         GVA.COMPANY,
         GVA.BRANCH,
         GA.V_DATE,
         Sum ( (Gva.Debit) - (Gva.Credit)) Allocation,
         Get_data_value_desc (Gva.Division, 105) Value_set_description
    From Gl_voucher_allocation Gva, 
         Gl_chart_of_accounts Gc,
         Gl_allocations ga
   Where Gva.Account_id = Gc.Chart_of_account_id
         And Gc.Allocation_id = Gva.Allocation_type
  Having Sum (Gva.Debit) - Sum (Gva.Credit) > 0
Group By Gc.Chart_of_account_code, 
         Gc.Description, 
         Gva.Division,
         GVA.COMPANY,
         GVA.BRANCH,
         GA.V_DATE
0 голосов
/ 09 марта 2020

Научитесь использовать правильный, явный, стандартный , читаемый JOIN синтаксис. Тогда это должно сработать:

SELECT gc.CHART_OF_ACCOUNT_CODE, gc.DESCRIPTION,
       GVA.DIVISION,
       (SUM(gva.debit) - SUM(gva.credit)) as Allocation,
       get_data_value_desc(gva.DIVISION, 105) as VALUE_SET_DESCRIPTION
FROM GL_VOUCHER_ALLOCATION gva JOIN
     gl_chart_of_accounts gc
     ON GVA.ACCOUNT_ID = GC.CHART_OF_ACCOUNT_ID AND
        Gc.ALLOCATION_ID = Gva.ALLOCATION_TYPE 
GROUP BY gc.CHART_OF_ACCOUNT_CODE, gc.DESCRIPTION, GVA.DIVISION
HAVING SUM(gva.debit) - SUM(gva.credit) > 0;

Я не думаю, что вы намереваетесь вкладывать SUM() s, в этом случае предложение HAVING находится не в том месте.

0 голосов
/ 09 марта 2020

Одним из вариантов может быть небольшая корректировка вашего текущего запроса (используется в качестве CTE в моем примере):

WITH temp
     AS (  SELECT gc.chart_of_account_code,
                  gc.description,
                  gva.division,
                  SUM (gva.debit) sum_debit,
                  SUM (gva.credit) sum_credit,
                  get_data_value_desc (gva.division, 105) value_set_description
             FROM gl_voucher_allocation gva, gl_chart_of_accounts gc
            WHERE     gva.account_id = gc.chart_of_account_id
                  AND gc.allocation_id = gva.allocation_type
         GROUP BY gc.chart_of_account_code, gc.description, gva.division)
SELECT chart_of_account_code,
       description,
       division,
       sum_debit - sum_credit allocation,
       value_set_description
  FROM temp
 WHERE sum_debit - sum_credit > 0
0 голосов
/ 09 марта 2020

А как же

select
    gc.CHART_OF_ACCOUNT_CODE,
    gc.DESCRIPTION,
    GVA.DIVISION,
    sum(sum(gva.debit) - sum(gva.credit)) Allocation,
    get_data_value_desc(gva.DIVISION, 105) VALUE_SET_DESCRIPTION
from
    GL_VOUCHER_ALLOCATION gva,
    gl_chart_of_accounts gc
where
    GVA.ACCOUNT_ID = GC.CHART_OF_ACCOUNT_ID
    and Gc.ALLOCATION_ID = Gva.ALLOCATION_TYPE
group by
    gc.CHART_OF_ACCOUNT_CODE,
    gc.DESCRIPTION,
    GVA.DIVISION,
    get_data_value_desc(gva.DIVISION, 105) VALUE_SET_DESCRIPTION
having
    sum(gva.debit) - sum(gva.credit) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...