如何在同一个选择句中读取更多行?

时间:2015-02-24 14:28:36

标签: sql delphi sql-server-2005

我正在使用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)

0 个答案:

没有答案