T-sql;使用SUM()添加正值和负值
我以前没有做过任何t-SQL,我想知道如何更改下面的脚本来区分正值和负值。目前,这似乎只是将两者相加并给出错误的值 我想添加一个IF条款,s.summa将遵循以下规则: e、 g -1+-1=-2 1+-1=0 1+1=2 如果我现在是正确的,它将被处理为“etumerkki”,因此,如果etumerkki变量为0,则sum将转换为负值,如果未设置etumerkki变量,则保持正常T-sql;使用SUM()添加正值和负值,sql,sql-server,variables,calculated-columns,Sql,Sql Server,Variables,Calculated Columns,我以前没有做过任何t-SQL,我想知道如何更改下面的脚本来区分正值和负值。目前,这似乎只是将两者相加并给出错误的值 我想添加一个IF条款,s.summa将遵循以下规则: e、 g -1+-1=-2 1+-1=0 1+1=2 如果我现在是正确的,它将被处理为“etumerkki”,因此,如果etumerkki变量为0,则sum将转换为负值,如果未设置etumerkki变量,则保持正常 SET @stmt = CONCAT( 'INSERT INTO tbl_1 (rivi,rivi_id,isan
SET @stmt = CONCAT( 'INSERT INTO tbl_1 (rivi,rivi_id,isanta_rivi,taso,lihavointi,tili_rivi,otsikko,selite,summa)
SELECT t.rivi , t.rivi_id , t.isanta_rivi , t.taso , t.lihavointi , t.rivi_tyyppi , t.otsikko , t.selite ,
CASE etumerkki
WHEN 0 THEN -1 * IFNULL(SUM(s.summa),0.00)
ELSE IFNULL(SUM(s.summa),0.00)
END AS summa
FROM tase_mem t
LEFT JOIN kuutio_paakirja s ON s.tili = t.tili
WHERE ' , nyk_summa_ehto , '
AND s.kpaikka_id = ' , kpaikka_id , ' AND s.projekti_id = ' , projekti_id , ' ' , isanta_ehto , '
GROUP BY t.rivi , t.rivi_id , t.taso , t.lihavointi , t.rivi_tyyppi , t.etumerkki , t.otsikko , t.selite;');
PREPARE stmt FROM @stmt;
EXECUTE stmt;
提前谢谢不确定我是否遵守了
SUM()
确实正确地计算有符号的数字。如
和(1,-1)=0,和(-1,-1)=2,和(1,1)=2
见:
但是,在查询中,您写入IFNULL(SUM(s.summa),0.00):
这意味着您的查询首先对所有s.summa求和,然后计算IFNULL
我想在将s.summa添加到一起之前,您需要求值s.summa是否为null。将查询更改为SUM(IFNULL(s.summa),0.00)应该会给出正确的结果。您所说的要执行的操作似乎已经在查询中了。有什么问题吗?当我得到第二年的结果时,它没有正确处理。示例100+-50=-150。因此,它读取前两个值,但只是将它们相加,不考虑减号
select sum(a)
from (
select 1 as a
union all select -1
) i
select sum(a)
from (
select -1 as a
union all select -1
) i
select sum(a)
from (
select 1 as a
union all select 1
) i