mysql - 设置一个变量来标识 MySQL 中要求和的特定字段

标签 mysql

我有一个如下所示的查询:

SELECT 'FY14' AS YEAR, 
 SUM(IF(acctcode = 'KAE',sc.bal03,0)) AS NIBD,
 SUM(IF(acctcode = 'GAA',sc.bal03,0)) AS Labor
FROM summarycurrent AS sc

sc.bal03 是 12 月份值的字段。1 月份的值存储在 sc.bal04 中。我的查询引用了 sc.bal03 多达 20 次,并且更改字段名称以从不同月份提取数据是重复的并且容易出错。我想使用一个变量来告诉查询从哪个字段求和,但我不知道这是否可能。

我当前(不起作用)的查询如下所示:

SET @Var:= sc.Bal03;
SELECT 'FY14' AS YEAR, 
 SUM(IF(acctcode = 'KAE',@Var,0)) AS NIBD,
 SUM(IF(acctcode = 'GAA',@Var,0)) AS Labor
FROM summarycurrent AS sc

我得到的结果要么是 FY14, 0, 0,要么是 sc. 不在字段列表中的错误。 我只想将 sc.Bal03 定义为求和一次的字段,而不是多次求和。

预先感谢您的帮助。

最佳答案

您可以尝试使用子查询并将bal03bal04重命名为value,如下所示

SELECT 'FY14' AS YEAR,
 SUM(IF(acctcode = 'KAE',value,0)) AS NIBD,
 SUM(IF(acctcode = 'GAA',value,0)) AS Labor
FROM 
 (SELECT acctcode, bal03 as value FROM 
 summarycurrent
  )as sc

SELECT 'FY14' AS YEAR,
 SUM(IF(acctcode = 'KAE',value,0)) AS NIBD,
 SUM(IF(acctcode = 'GAA',value,0)) AS Labor
FROM 
 (SELECT acctcode, bal04 as value FROM 
 summarycurrent
  )as sc

这样您只需更改 bal03bal04 一次。

关于mysql - 设置一个变量来标识 MySQL 中要求和的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942121/

相关文章:

mysql - 存储过程超时

sql - 列中什么时候为空值 "safe"?

php - mysql 查询问题似乎无法找出原因

php - 将数据插入mysql - ios

php - 错误的整数值 : '' for column 'user_id' at row 1

php - sql查询条件

php - 将 WordPress 插件中的 "mysql_fetch_array"更新为 "$wpdb->get_results"

c# - ') 附近的语法不正确;

java - 在 mysql 中存储时间戳的最佳(性能方面)方式

mysql - Node Express mysql 连接错误处理优化