如何在算术运算中使用子查询值

Posted

技术标签:

【中文标题】如何在算术运算中使用子查询值【英文标题】:How to using subquery values in arithmetic operations 【发布时间】:2015-02-20 07:56:32 【问题描述】:

我的经理想查看我们的供应商发货的总价值是多少,以及他们记录的发票的总价值是多少。因此,他可以看到供应商与未发送发票的差异和需求。

这是我的代码。

它正在处理会计表和装运明细表。

fis_meblag0 总是从零开始,因为它是 320 个帐户,所以我将它乘以 -1 以获得真正的价值。

sth_tutar 是装运价值,sth_vergi 是增值税,因此它们的总和等于加增值税的总和。

现在是困难的部分。

经理希望在另一列中区分它们,并将值 z z 排序为 a。

我知道我可以重复使用相同的子选择来获取总计,但我想知道是否可以在不再次使用相同子查询的情况下实现这一目标。

我的意思是在第一个子选择中我有总计,在最后一列中我只需要总计,我可以使用总计而不再次计算吗?

问候

select 
    ch.cari_kod as Carikod,
    ch.cari_unvan1 as Unvani,  
    (select (sum(mf.fis_meblag0) * -1) 
     from dbo.MUHASEBE_FISLERI mf 
     where (mf.fis_tarih > '20141231' and mf.fis_tarih < '20150201')
       and mf.fis_hesap_kod = ch.cari_kod
       and mf.fis_meblag0 < 0) as mtoplam,
   (Select sum (sth.sth_tutar + sth.sth_vergi) 
    from dbo.STOK_HAREKETLERI sth 
    where (sth.sth_tarih > '20141231' and sth.sth_tarih < '20150201') 
      and sth.sth_cari_kodu = ch.cari_kod
      and sth.sth_normal_iade = 0
      and sth.sth_tip = 0) as stoplam 
from 
    dbo.CARI_HESAPLAR ch
where 
    ch.cari_kod like '320%'

【问题讨论】:

如果我们可以在最后一列中只使用 "(mtoplam-stoplam) 作为 Grand_total,那就太好了。 我知道但我不会在实际环境中使用它。我知道我们可以编写 UDF,但子查询比 UDF 快。我之前尝试过一个不同的问题,并且子选择具有更好的性能。 【参考方案1】:

试试这个查询:

select Carikod, Unvani, mtoplam, stoplam, mtoplam - stoplam as Grand_total
from
(
    -- your full query here
) T

【讨论】:

哇,这就像一个魅力。你太棒了......我也使用 stoplam 按子句排序并且它有效

以上是关于如何在算术运算中使用子查询值的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Visual Studio C++ 问题,“算术溢出:在 4 字节值上使用运算符 '*',然后将结果转换为 8 字节值。”?

如何在 Rust Diesel 中使用时间戳和间隔进行算术运算

使用默认值声明 Thymeleaf 变量后如何对其进行算术运算?

Impala 中 SELECT 语句的算术运算

在python中有多少种运算符?解释一下算术运算符

如何对char类型进行安全算术运算