我正在使用SQL Server 2005和Delphi xe7并使用adoquery。
我们为客户提供销售发票。由于政府希望我们每月必须报告超过5000的客户总数(不包括增值税)。
这看似简单,但我们在发票中有不同的增值税值,因此如果发票有一个增值税值或两个或三个,我必须得到正确的值。
这是我的基本选择陈述:
(mf.fis_aciklama1 like '%U SFA%')
or (mf.fis_aciklama1 like '%U ÝAF%')
此where子句足以获得销售发票。还行吧。
我已经阅读下一行的600个会计编号用于发货总额,下一行用于增值税值。您可以看到ABS功能线和子选择。
现在的问题是:如果我必须阅读接下来的两行,我该如何学习呢?
如何使用“if”创建这样的select语句?
其实我有一个想法,但我没有实践如何选择这个创建语句。
IF the fis_meblag0 of first row > fis_meblag0 of next + fis_meblag0 next+ next;
然后我们必须阅读更多行,但是要在SQL中写这个。
select
mf.fis_tarih as Tarih,
mf.fis_hesap_kod as HesapKod,
mh.muh_hesap_isim1 as Unvan,
mf.fis_aciklama1 as Aciklama,
mf.fis_yevmiye_no as Yno,
mf.fis_sira_no as Sno,
mf.fis_meblag0 as Tutar,
ABS((Select top 1 mf1.fis_meblag0
from dbo.MUHASEBE_FISLERI mf1
where mf.fis_yevmiye_no = mf1.fis_yevmiye_no
and mf.fis_tur = mf1.fis_tur
and mf1.fis_RECno = mf.fis_RECno + 1
and left(mf1.fis_hesap_kod, 3) = '600')) as Matrah,
ABS((Select top 1 mf2.fis_meblag0
from dbo.MUHASEBE_FISLERI mf2
where mf.fis_yevmiye_no = mf2.fis_yevmiye_no
and mf.fis_tur = mf2.fis_tur
and mf2.fis_RECno = mf.fis_RECno + 2
and left(mf2.fis_hesap_kod, 3) = '391')) as KDV,
cr.cari_VergiKimlikNo as Vno
from
dbo.MUHASEBE_FISLERI mf
left join
dbo.MUHASEBE_HESAP_PLANI mh ON mf.fis_hesap_kod = mh.muh_hesap_kod
left join
dbo.CARI_HESAPLAR cr ON mf.fis_hesap_kod = cr.cari_kod
where
mf.fis_tarih >= '20130501'
and mf.fis_tarih <= '20130531'
and ((mf.fis_aciklama1 like '%U SFA%')
or (mf.fis_aciklama1 like '%U ÝAF%'))
order by
mf.fis_hesap_kod
这是我的表结构
fis_RECno Integer IDENTITY
fis_RECid_DBCno Smallint
fis_RECid_RECno Integer
fis_SpecRECno Integer
fis_iptal Bit
fis_fileid Smallint
fis_hidden Bit
fis_kilitli Bit
fis_degisti Bit
fis_checksum Integer
fis_create_user Smallint
fis_create_date DateTime
fis_lastup_user Smallint
fis_lastup_date DateTime
fis_special1 Nvarchar(4)
fis_special2 Nvarchar(4)
fis_special3 Nvarchar(4)
fis_firmano Integer Firma No
fis_subeno Integer Sube No
fis_maliyil Integer Mali Yil
fis_tarih DateTime Fis Tarihi
fis_sira_no Integer Fis Sira No
fis_tur Tinyint Fis Türü
fis_hesap_kod Nvarchar(25) Fis Hesap Kodu
fis_satir_no Integer Fis Satir No
fis_aciklama1 Nvarchar(127) Açiklama
fis_meblag0 Float Yerli döviz cinsinden meblag
fis_meblag1 Float Alternatif döviz cinsinden meblag
fis_meblag2 Float Orjinal döviz cinsinden meblag
fis_meblag3 Float Stok hesabi ise ana birimden miktari
fis_meblag4 Float Stok hesabi ise 2. birimden miktari
fis_meblag5 Float Stok hesabi ise 3. birimden miktari
fis_meblag6 Float Stok hesabi ise 4. birimden miktari
fis_sorumluluk_kodu Nvarchar(25) Sorumluluk Merkezi
fis_ticari_tip Tinyint Ticari Tip Kodu
fis_ticari_DBCno Smallint Ilgili Ticari Kayda Baglanti DBCNO
fis_ticari_RECno Integer Ilgili Ticari Kayda Baglanti RECNO
fis_kurfarkifl Bit Kur Farki Var mi?
fis_ticari_evraktip Tinyint Ticari Evrak Tipi
fis_tic_evrak_seri dbo.nvarchar_evrakseri Ticari Evrak Seri no
fis_tic_evrak_sira Integer Ticari Evrak Sira No
fis_tic_belgeno dbo.nvarchar_belgeno Ticari Evrak Belge No
fis_tic_belgetarihi DateTime Belge Tarihi
fis_yevmiye_no Integer Fis Yevmiye No
fis_katagori Smallint Fis Kategori
fis_evrak_DBCno Smallint
fis_fmahsup_tipi Tinyint Fis Mahsup Tipi
fis_fozelmahkod Nvarchar(25) Özel Mahsup Kodu
fis_grupkodu Nvarchar(4) Fis Grup Kodu
fis_aktif_pasif Tinyint Aktif Fis - Pasif Fis
fis_proje_kodu Nvarchar(25)