none
sql server çoklu tablodan toplam fark alma RRS feed

  • Genel Tartışma

  • merhaba sql server da 4 tane tablom var 

    SELECT     dbo.IlacSarf.IlacID, dbo.IlacSarf.IlacAdi, dbo.Tur.TurAdi, dbo.eczaneGiris.Miktar,SUM(ISNULL(dbo.eczaneCikis.miktar,0)) ,
     dbo.eczaneGiris.sonkullanmaTarihi,DATEDIFF(MONTH,GETDATE(),sonkullanmaTarihi) AS 'KalanSure' 
    FROM  dbo.eczaneGiris INNER JOIN dbo.IlacSarf ON dbo.eczaneGiris.ilacID = dbo.IlacSarf.IlacID INNER JOIN                   
    dbo.Tur ON dbo.IlacSarf.Tur = dbo.Tur.ID INNER JOIN dbo.eczaneCikis  ON dbo.eczaneGiris.girisID=dbo.eczaneCikis.girisID 
    GROUP BY dbo.IlacSarf.IlacID, dbo.IlacSarf.IlacAdi, dbo.Tur.TurAdi, dbo.eczaneGiris.Miktar, dbo.eczaneGiris.sonkullanmaTarihi 
    HAVING DATEDIFF(MONTH,GETDATE(),sonkullanmaTarihi)>=0 AND DATEDIFF(MONTH,GETDATE(),sonkullanmaTarihi)<=12 and 
    SUM(dbo.eczaneGiris.Miktar) - SUM(ISNULL(dbo.eczaneCikis.miktar, 0)) > 0

    bu şekilde sql sorgusu hazırladım ama sayılar tutmuyor bir türlü benım yapmak ıstediğim giriş miktarı ile çıkış mıktarı farkını alıp raporlamak farklı tablolarda oldugu için sayı tam olarak gelmıyor.... yardımcı olurmusunuz... 


    od

    29 Eylül 2020 Salı 08:47

Tüm Yanıtlar

  • Mumkunse gelecek sefere tablolarinizi, icinde ornek veri ile kod seklinde veriniz. O zaman cevap yazmasi cok daha kolay oluyor. 

    WITH
      girisler(ilacId, girisId, giren, skTarih) AS (
                                                     SELECT
                                                              ilacId, girisID, SUM(miktar), sonkullanmaTarihi
                                                     FROM     eczaneGiris
                                                     GROUP BY ilacId, girisID, sonkullanmaTarihi
                                                   )
    ,
      cikislar(girisID, cikan) AS (SELECT girisID, SUM(miktar) AS cikis FROM eczaneCikis GROUP BY girisID)
    SELECT
          s.IlacID
        , s.IlacAdi
        , t.TurAdi
        , g.Giren                               AS GirenMiktar
        , COALESCE(c.Cikan, 0)                  AS CikanMiktar
        , g.skTarih                             AS sonkullanmaTarihi
        , DATEDIFF(MONTH, GETDATE(), g.skTarih) AS 'KalanSure'
        , g.giren-COALESCE(c.Cikan, 0)          AS KalanMiktar
    FROM  girisler            g
          INNER JOIN IlacSarf s ON g.ilacID=s.IlacID
          INNER JOIN Tur      t ON s.Tur=t.ID
          LEFT JOIN cikislar  c ON g.girisID=c.girisID
    WHERE DATEDIFF(MONTH, GETDATE(), sonkullanmaTarihi) BETWEEN 0 AND 12
      AND g.giren>COALESCE(c.Cikan, 0);
    



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    29 Eylül 2020 Salı 11:08
  • çok teşekkür ederimmm...  db paylasabılırım isterseniz... 

    od

    29 Eylül 2020 Salı 11:46
  • https://1drv.ms/u/s!AnrPvRpYcdhngQrp0LjeOdB6rSMA?e=37EO5p

    db yukledım hocam çok teşekkurler..


    od

    29 Eylül 2020 Salı 11:48
  • hocam aynı id ler tekrar ediyor..bakabılırmısınız .teşekkürler..


    od

    29 Eylül 2020 Salı 11:57
  • Kodun sonunda uafk bir hata yapmisim, onu :

    WHERE DATEDIFF(MONTH, GETDATE(), g.skTarih) BETWEEN 0 AND 12
      AND g.giren>COALESCE(c.Cikan, 0)
    ORDER BY s.IlacAdi;

    seklinde duzeltince ben tekrar almadim:

    IlacID	IlacAdi	TurAdi	GirenMiktar	CikanMiktar	sonkullanmaTarihi	KalanSure	KalanMiktar
    1105	% 0,9 İZOTONİK NaCI 250 ML	İlaç	50	0	2021-08-31	11	50
    114	%5 DEKSTROZ 500 ML	İlaç	104	0	2021-04-30	7	104
    109	1/3 İZOMİKS-POLİDEKS 500 CC	İlaç	25	21	2021-06-30	9	4
    107	250 CC SF	İlaç	178	0	2021-08-01	11	178
    77	3M Maske	Sarf	236	30	2021-01-31	4	206
    74	Abeslang	Sarf	2900	200	2021-01-31	4	2700
    80	Alet Dezenfektanı Derdevice Plus Opa	Sarf	8	1	2021-06-30	9	7
    52	Anestol Pomad	İlaç	15	5	2021-04-30	7	10
    34	ATROPİN SÜLFAT 1/2	İlaç	10	0	2021-08-30	11	10
    76	Bağçıklı Maske	Sarf	1600	600	2021-01-31	4	1000
    26	BEHEPTAL AMP	İlaç	255	0	2020-12-30	3	255
    120	Böbrek Küvet	Sarf	200	20	2020-12-31	3	180
    29	CALCIOSEL AMP %10	İlaç	10	0	2021-02-28	5	10
    37	CORDALİN 150 MG/ 3 ML	İlaç	6	0	2020-11-30	2	6
    1111	CORTAİR 1MG/2 ML	İlaç	120	0	2021-07-31	10	120
    44	Cortair-Pulmicort 1 mg 	İlaç	60	0	2021-01-31	4	60
    1103	DEKORT 8 MG/2 ML	İlaç	35	0	2020-10-31	1	35
    35	DİLTİZEM 25 MG	İlaç	2	0	2020-11-30	2	2
    1110	DİLTİZEM L 25 MG ENJ.TOZU	İlaç	6	0	2021-03-31	6	6
    49	Ecopirin 300 mg.	İlaç	15	0	2021-04-30	7	15
    78	El Dezenfektanı	Sarf	187	24	2021-01-31	4	163
    45	Flixair	İlaç	170	0	2021-06-30	9	170
    56	Furacin Pomad	İlaç	10	5	2021-01-30	4	5
    23	FUROMİD20 MG/2 ML	İlaç	20	0	2021-02-28	5	20
    1101	FUROSAN 20MG/2 ML IM-IV	İlaç	100	0	2021-07-31	10	100
    54	Hametan Pomad	İlaç	2	0	2020-11-30	2	2
    113	ISOLYTE S 500 ML	İlaç	130	0	2020-12-30	3	130
    112	İZOLEKS 500 ML 	İlaç	104	0	2021-07-30	10	104
    69	Ketavel 50 mg/2ml	İlaç	186	25	2021-02-28	5	161
    108	LAKTATLI RİNGER 500 CC	İlaç	147	0	2021-04-30	7	147
    75	Lastikli Maske	Sarf	7050	6450	2021-01-31	4	600
    18	MAXTHİO 4 MG / 2 ML	İlaç	360	120	2021-09-30	12	240
    1120	NACOSEL AMP	İlaç	20	0	2020-11-30	2	20
    41	NACOSEL AMP.	İlaç	120	0	2021-04-30	7	120
    41	NACOSEL AMP.	İlaç	60	0	2020-12-30	3	60
    93	Non Steril Eldiven (M)	Sarf	31000	14300	2021-01-31	4	16700
    72	Nootrover 1gr/5ml	İlaç	84	0	2021-01-30	4	84
    102	NORODOL AMP.	İlaç	40	0	2021-02-28	5	40
    39	OKSAPAR 4000 IU	İlaç	10	0	2021-02-28	5	10
    1102	ONPYRON 1 G/2 ML	İlaç	250	0	2021-05-31	8	250
    82	Pamuk 1 Kg.	Sarf	32	4	2021-01-31	4	28
    13	PAROL 1GR/100ML IV 	İlaç	200	50	2021-01-31	4	150
    131	PROGAS FLK.	İlaç	100	10	2021-05-31	8	90
    22	RANİVER 50 MG/ 2 ML	İlaç	320	280	2021-04-30	7	40
    105	RENTANİL AMP.	İlaç	5	0	2021-02-28	5	5
    70	Selovita-C 500 mg/5ml	İlaç	250	0	2021-06-30	9	250
    85	Spanç	Sarf	19500	500	2021-01-31	4	19000
    21	Şeker Stripi 	Sarf	8	0	2021-02-28	5	8
    28	TİLCOTİL AMP.	İlaç	25	0	2021-04-30	7	25
    84	Ultrason Jeli	Sarf	12	0	2020-12-31	3	12



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    29 Eylül 2020 Salı 14:16
  • teşekkür ederim emeğinize sağlık..

    od

    29 Eylül 2020 Salı 16:59