Mysql 需要查询减法和除法吗?

Mysql 需要查询减法和除法吗?,mysql,sql,advantage-database-server,Mysql,Sql,Advantage Database Server,在我的表格列中,如下所示 星期一,是的,星期五。。。我想问一下 SELECT ((( SELECT SUM(msd_sva) FROM msdfc00 WHERE msd_yea IN ( SELECT DISTINCT msd_yea FROM msdfc00 ) )-( SELECT SUM(msd_sva)

在我的表格列中,如下所示

星期一,是的,星期五。。。我想问一下

SELECT
         (((        SELECT SUM(msd_sva)
        FROM  msdfc00 
        WHERE    msd_yea  IN
            (
            SELECT DISTINCT msd_yea
            FROM  msdfc00 
            )
)-(     SELECT SUM(msd_sva)
        FROM  msdfc00 
        WHERE    msd_yea  = '2016'
)* 100) / (     SELECT SUM(msd_sva)
        FROM  msdfc00 
        WHERE    msd_yea  = '2016'
)) AS thePerc,
         msd_yea
FROM  msdfc00 
WHERE    msd_fco  = 'KF'
 AND    msd_mon  = '11'
GROUP BY  msd_yea 
也就是说,我想从2016年msd月期间的msd月sva总额中减去2017年msd月期间的msd月sva总额。我的基准年是2016年。到2018年,我只有4年的时间。所以计算将是这样的

2016年的值为0,2017年为2017-2016年* 2017年为100\2016,2017年为2018-2016*100\2016 2017年将是2019-2016*100\2016年


有什么帮助吗?

使用条件聚合:

select sum(case when msd_yea = 2016 then msc_sva end) as sva_2016,
       sum(case when msd_yea = 2017 then msc_sva end) as sva_2017,
       sum(case when msd_yea = 2018 then msc_sva end) as sva_2018,
       sum(case when msd_yea = 2019 then msc_sva end) as sva_2019       
from msdfc00 
where msd_fco  = 'KF' and msd_mon  = '11';
您可以使用子查询进行最终计算:

select 0 as val_2016,
       (sva_2017 - sva_2016) * 100 / sva_2016 as val_2017,
       . . .
from (select sum(case when msd_yea = 2016 then msc_sva end) as sva_2016,
             sum(case when msd_yea = 2017 then msc_sva end) as sva_2017,
             sum(case when msd_yea = 2018 then msc_sva end) as sva_2018,
             sum(case when msd_yea = 2019 then msc_sva end) as sva_2019       
      from msdfc00 
      where msd_fco  = 'KF' and msd_mon  = '11'
     ) m;

参见:选择0作为2016年增值税,选择sva_2017-sva_2016*100/sva_2016作为2017年增值税,选择sva_2018-sva_2016*100/sva_2016作为2018年增值税。。从中选择msd_yea=2016时的sumcase,然后msd_sva结束为sva_2016;msd_yea=2017时的sumcase,然后msd_sva结束为sva_2017;msd_yea=2018时的sumcase,然后msd_sva结束为sva_2018,如果msd_yea=2019,则msd_sva从msdfc00终止为sva_2019,其中msd_fco='KF'和msd_mon='11'm;无效列sva_2017thank you@Gordon Linoff。。我收到一个错误,显示无效列..@Gopipuli。列名取自您的问题,尽管可能有拼写错误。感谢Gordon Linoff,我刚刚将查询拆分为两个选项卡,它会给出结果。我不是一个问题专家。谢谢你抽出宝贵的时间。如果时间允许,我现在还需要一个帮助,上面的结果是按行显示的,是否按列显示?这是年度专栏吗?@Gopipuli。我不完全理解你在评论中的要求。你能问另一个问题吗,用样本数据和期望的结果来确保解释清楚?