1

I want to sum all the rows of T.CLS AND CLS in below query but I am not able to as it's showing not a Sony group function. How to I resolve this?

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
Rahul Anand
  • 523
  • 1
  • 7
  • 20

1 Answers1

2

You can use analitic function of course:

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

If you want using GROUP BY, then all fields(except grouping data) must write in GROUP BY

Rustam Pulatov
  • 625
  • 1
  • 9
  • 20