Суммирование значения нескольких строк во вложенном запросе SQL Oracle - PullRequest
1 голос
/ 18 октября 2019

Я хочу суммировать все строки T.CLS и CLS в приведенном ниже запросе, но я не могу этого сделать, так как он показывает не групповую функцию Sony. Как мне решить эту проблему?

SELECT A.PROD,
          A.ID AS ACCOUNT,
          A.NAME AS NAME,
          T.PDATE AS DATE,
          A.CODE,
          T.CLS,
          CASE
              WHEN A.CODE != 'abc' THEN
                     (SELECT DISTINCT col
                      FROM table1
                      WHERE CODE2 = A.CODE
                        AND TOCODE = 'ABC'
                        AND ETYPE = 'S') * T.CLS
              ELSE CLS
          END AS EQB
   FROM UTTABLE T JOIN ACTABLE A ON T.AID = A.ID

1 Ответ

2 голосов
/ 18 октября 2019

Конечно, вы можете использовать аналитическую функцию:

SELECT A.PROD,
      A.ID AS ACCOUNT,
      A.NAME AS NAME,
      T.PDATE AS DATE,
      A.CODE,
      T.CLS,
      sum(T.CLS) over (partition by A.ID) "SUMM",
      count(T.CLS) over (partition by A.ID) "amount",
      CASE
          WHEN A.CODE != 'abc' THEN
                 (SELECT DISTINCT col
                  FROM table1
                  WHERE CODE2 = A.CODE
                    AND TOCODE = 'ABC'
                    AND ETYPE = 'S') * T.CLS
          ELSE CLS
      END AS EQB
FROM UTTABLE T JOIN ACTABLE A ON T.AID = A.ID

Если вы хотите использовать GROUP BY, тогда все поля (кроме данных группировки) должны записываться в GROUP BY

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