我有一个如下所示的查询:
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
定义为求和一次的字段,而不是多次求和。
预先感谢您的帮助。
最佳答案
您可以尝试使用子查询并将bal03
或bal04
重命名为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
这样您只需更改 bal03
或 bal04
一次。
关于mysql - 设置一个变量来标识 MySQL 中要求和的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942121/