mysql - 对嵌套 SQL Oracle 查询中的多行值求和

标签 mysql sql oracle group-by analytics

我想在下面的查询中对 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

最佳答案

可以使用coarse的解析函数:

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

关于mysql - 对嵌套 SQL Oracle 查询中的多行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58444234/

相关文章:

sql - 我如何加入派生表?

mysql - 如何将 sum 的结果存储到可以在查询中使用的标识符中?

mysql - 加入或连接mysql时出现语法错误

python - 无法在 Windows 上安装正确版本的 mysql(8.0.13)

sql - 插入时 float 更改为科学记数法

当数字有多个差异时,SQL 为字段指定一个名称

mysql - MySql 中的嵌套选择查询

mysql - 使用 REGEX 代替 BETWEEN 运算符进行 SQL 搜索

sql - 将varchar2的oracle标准数据类型从BYTE设置为CHAR

oracle - utl_http : ORA-24263: Certificate of the remote server does not match the target address