Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何求两个字段的和_Mysql_Sql_Oracle - Fatal编程技术网

Mysql 如何求两个字段的和

Mysql 如何求两个字段的和,mysql,sql,oracle,Mysql,Sql,Oracle,我正在尝试执行算术运算符,这是我的查询 SELECT GLB.BEGIN_BALANCE_DR_BEQ + GLB.BEGIN_BALANCE_CR_BEQ AS ACTIVITY, GLB.PERIOD_NET_DR + GLB.PERIOD_NET_CR AS BEG_BALANCE , ACTIVITY + BEG_BALANCE AS END_BALANCE, SUM(ACTIVITY) AS TOTAL_ACT, SUM(BEG_BALANCE

我正在尝试执行算术运算符,这是我的查询

SELECT

    GLB.BEGIN_BALANCE_DR_BEQ + GLB.BEGIN_BALANCE_CR_BEQ AS ACTIVITY,
    GLB.PERIOD_NET_DR + GLB.PERIOD_NET_CR AS BEG_BALANCE ,
    ACTIVITY + BEG_BALANCE AS END_BALANCE,
    SUM(ACTIVITY) AS TOTAL_ACT,
    SUM(BEG_BALANCE) AS TOTAL_BEG_BALANCE,
    SUM(END_BALANCE) AS TOTAL_END_BALANCE, 

但它不起作用,有人能指导我怎么修复它吗

在您的情况下,您不能在同一选择级别中使用别名(如果没有适当的分组依据,您也不能使用聚合级别和未聚合列)

应使用子查询快速使用别名,例如:

  SELECT 
      SUM(ACTIVITY) AS TOTAL_ACT,
      SUM(BEG_BALANCE) AS TOTAL_BEG_BALANCE,
      SUM(END_BALANCE) AS TOTAL_END_BALANCE
      FROM( 
        SELECT

        GLB.BEGIN_BALANCE_DR_BEQ + GLB.BEGIN_BALANCE_CR_BEQ AS ACTIVITY,
        GLB.PERIOD_NET_DR + GLB.PERIOD_NET_CR AS BEG_BALANCE ,
        ACTIVITY + BEG_BALANCE AS END_BALANCE
        FROM My_TABLE 
      ) T

在您的情况下,您不能在同一选择级别中使用别名(如果没有适当的分组依据,您也不能使用聚合级别和未聚合列)

应使用子查询快速使用别名,例如:

  SELECT 
      SUM(ACTIVITY) AS TOTAL_ACT,
      SUM(BEG_BALANCE) AS TOTAL_BEG_BALANCE,
      SUM(END_BALANCE) AS TOTAL_END_BALANCE
      FROM( 
        SELECT

        GLB.BEGIN_BALANCE_DR_BEQ + GLB.BEGIN_BALANCE_CR_BEQ AS ACTIVITY,
        GLB.PERIOD_NET_DR + GLB.PERIOD_NET_CR AS BEG_BALANCE ,
        ACTIVITY + BEG_BALANCE AS END_BALANCE
        FROM My_TABLE 
      ) T

此查询中混合了两种类型的操作。前三行是单行操作,后三行是多行操作。如文所述,您要求为每行提供
GLB.BEGIN\u BALANCE\u DR\u BEQ+GLB.BEGIN\u BALANCE\u CR\u BEQ As ACTIVITY
的值,以及所有行中
ACTIVITY
的总和


如果需要所有行中每个字段的总和,则必须将每个调用包装在
sum(…)
函数中。如果要混合使用单行和多行字段,则必须将它们拆分为两个查询。

此查询中混合了两种类型的操作。前三行是单行操作,后三行是多行操作。如文所述,您要求为每行提供
GLB.BEGIN\u BALANCE\u DR\u BEQ+GLB.BEGIN\u BALANCE\u CR\u BEQ As ACTIVITY
的值,以及所有行中
ACTIVITY
的总和


如果需要所有行中每个字段的总和,则必须将每个调用包装在
sum(…)
函数中。如果要混合使用单行和多行字段,则必须将它们拆分为两个查询。

在查询的SELECT列表中指定的别名在SELECT列表的其他位置或同一查询的WHERE子句中引用无效。(MySQL确实有扩展,允许按顺序引用列别名,并具有。)

如果要引用选择列表中的别名,一个选项是将查询放入内联视图。外部查询可以引用别名作为列名。作为一个简单的例子

 SELECT c.myalias
      , c.fee
      , c.myalias + c.fee AS grand_tot
   FROM ( SELECT t.somecol + t.othercol  AS `myalias`
               , t.fi + t.fo + t.fum     AS `fee`
            FROM t
        ) c
出于性能方面的原因,我们通常会避免这样做,因为将内联视图具体化为派生表的成本很高。避免内联视图和可用的引用列会更有效,即使我们必须重复表达式

 SELECT t.somecol + t.othercol                       AS `myalias`
      , t.fi + t.fo + t.fum                          AS `fee`
      , t.somecol + t.othercol + t.fi + t.fo + t.fum AS `grand_tot`
   FROM t 

还不清楚我们需要返回什么结果集

如果我们只需要总计,我会避免使用内联视图,而只是咬紧牙关,使用引用选择列表中可用列的表达式。返回的结果集似乎很奇怪:

SELECT SUM( GLB.BEGIN_BALANCE_DR_BEQ 
          + GLB.BEGIN_BALANCE_CR_BEQ
       ) AS TOTAL_ACT
     , SUM( GLB.PERIOD_NET_DR
          + GLB.PERIOD_NET_CR
       ) AS TOTAL_BEG_BALANCE
     , SUM( GLB_GLB.BEGIN_BALANCE_DR_BEQ 
          + GLB.BEGIN_BALANCE_CR_BEQ 
          + GLB.PERIOD_NET_DR
          + GLB.PERIOD_NET_CR
       ) AS TOTAL_END_BALANCE
  FROM ... 

在查询的SELECT列表中指定的别名在SELECT列表的其他位置或同一查询的WHERE子句中引用时无效。(MySQL确实有扩展,允许按顺序引用列别名,并具有。)

如果要引用选择列表中的别名,一个选项是将查询放入内联视图。外部查询可以引用别名作为列名。作为一个简单的例子

 SELECT c.myalias
      , c.fee
      , c.myalias + c.fee AS grand_tot
   FROM ( SELECT t.somecol + t.othercol  AS `myalias`
               , t.fi + t.fo + t.fum     AS `fee`
            FROM t
        ) c
出于性能方面的原因,我们通常会避免这样做,因为将内联视图具体化为派生表的成本很高。避免内联视图和可用的引用列会更有效,即使我们必须重复表达式

 SELECT t.somecol + t.othercol                       AS `myalias`
      , t.fi + t.fo + t.fum                          AS `fee`
      , t.somecol + t.othercol + t.fi + t.fo + t.fum AS `grand_tot`
   FROM t 

还不清楚我们需要返回什么结果集

如果我们只需要总计,我会避免使用内联视图,而只是咬紧牙关,使用引用选择列表中可用列的表达式。返回的结果集似乎很奇怪:

SELECT SUM( GLB.BEGIN_BALANCE_DR_BEQ 
          + GLB.BEGIN_BALANCE_CR_BEQ
       ) AS TOTAL_ACT
     , SUM( GLB.PERIOD_NET_DR
          + GLB.PERIOD_NET_CR
       ) AS TOTAL_BEG_BALANCE
     , SUM( GLB_GLB.BEGIN_BALANCE_DR_BEQ 
          + GLB.BEGIN_BALANCE_CR_BEQ 
          + GLB.PERIOD_NET_DR
          + GLB.PERIOD_NET_CR
       ) AS TOTAL_END_BALANCE
  FROM ... 

这只是问题的一半。。。其余的看起来怎么样?请正确标记。要么是MySQL,要么是Oracle,不能两者兼而有之。而且你发布的查询肯定不起作用。这只是查询的一半。。。其余的看起来怎么样?请正确标记。它是MySQL或Oracle,不能两者都是。而且你发布的查询肯定不会起作用。我认为在分配别名的查询的选择列表中不能引用
ACTIVITY
BEG\u BALANCE
。如果我们想从内联视图返回
END\u BALANCE
,我们需要使用引用选择列表中可用列的表达式。在这种情况下,我不认为我们真的需要返回
END\u BALANCE
,我们可以使用
SUM(ACTIVITY+BEG\u BALANCE)
来代替外部查询中的
SUM(END\u BALANCE)
。我不认为
ACTIVITY
BEG\u BALANCE
可以在分配这些别名的查询的选择列表中引用。如果我们想从内联视图返回
END\u BALANCE
,我们需要使用引用选择列表中可用列的表达式。在这种情况下,我认为我们真的不需要返回
END\u BALANCE
,我们可以使用
SUM(ACTIVITY+BEG\u BALANCE)
代替外部查询中的
SUM(END\u BALANCE)