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

时间:2015-02-20 07:56:33

标签: sql sql-server

我的经理希望了解供应商货件的总价值,以及所记录发票的总价值。因此,他可以看到差异,并希望从供应商到未发票的发票。

这是我的代码。

正在处理会计表和发货明细表。

fis_meblag0总是很少从零开始,因为它是320帐户,所以我将它变为-1以获得实际价值。

sth_tutar是发货价值,sth_vergi是增值税,因此它们的总和等于总增值税的总和。

现在是困难的部分。

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

我知道我可以重复使用相同的子选项来获取总数,但我想知道如果不再使用相同的子查询,我可以实现这一点。

我的意思是在第一个subselect我有总数,在最后一栏我只需要总数,我可以使用总计而不再计算它吗?

此致

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%'

1 个答案:

答案 0 :(得分:0)

尝试此查询:

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