DECLARE @Korekty TABLE ( Agencja nvarchar(50), Agent nvarchar(100), Rok int, Ms int, NrRoz nvarchar(8), Netto money, Vat money, Brutto money, SumaZaplat money, Ilosc int ) INSERT INTO @Korekty SELECT Agencja, Agent, ROK, MS, NrRoz, SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc FROM ( SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent, YEAR(Korekta.DATA_SPRZEDAZY) AS ROK, MONTH(Korekta.DATA_SPRZEDAZY) AS MS, Korekta.NUMER_ROZ AS NrRoz, NETTO = (Korekta.Netto * -1), VAT = ((Korekta.Vat) * -1), BRUTTO = ((Korekta.Netto * (1 + Korekta.S_Vat)) * -1), 0 AS SZap FROM VIEW_KOREKTY AS Korekta INNER JOIN AGENCI ON Korekta.NUMER_ROZ = AGENCI.F_ROZ INNER JOIN AGENCJE ON Korekta.Id_agencji = AGENCJE.Id_agencji WHERE YEAR(Korekta.DATA_SPRZEDAZY)=@rok AND MONTH(Korekta.DATA_SPRZEDAZY)=@miesiac AND (AGENCJE.Id_agencji<>4 OR Korekta.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR Korekta.NUMER_ROZ ='POZ') AND Korekta.SystemKsiegowyId IN (@systemKsiegowy) GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, Korekta.ID_FAKTURY, Korekta.DATA_SPRZEDAZY, YEAR(Korekta.DATA_SPRZEDAZY), Korekta.NUMER_ROZ, Korekta.Netto, Korekta.Vat, Korekta.Brutto, Korekta.S_Vat ) T GROUP BY Agencja, Agent, ROK, MS, NrRoz DECLARE @Faktury TABLE ( Agencja nvarchar(50), Agent nvarchar(100), Rok int, Ms int, NrRoz nvarchar(8), Netto money, Vat money, Brutto money, SumaZaplat money, Ilosc int ) INSERT INTO @Faktury -- sprzedaz - faktury bez korekt SELECT Agencja COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agencja, Agent COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agent, ROK, MS, NrRoz COLLATE SQL_Latin1_General_CP1250_CI_AS AS NrRoz, SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc FROM ( SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent, YEAR(FAKTURY.DATA_SPRZEDAZY) AS ROK, MONTH(FAKTURY.DATA_SPRZEDAZY) AS MS, FAKTURY.NUMER_ROZ AS NrRoz, NETTO = SUM(FAKTURA_DETAILS.NETTO), VAT = SUM(FAKTURA_DETAILS.NETTO * FAKTURA_DETAILS.S_VAT), BRUTTO = SUM(FAKTURA_DETAILS.NETTO * (1 + FAKTURA_DETAILS.S_VAT)), FAKTURY.suma_zaplat AS SZap FROM FAKTURY INNER JOIN FAKTURA_DETAILS ON FAKTURY.ID_FAKTURY = FAKTURA_DETAILS.ID_FAKTURY LEFT JOIN AGENCI ON FAKTURY.NUMER_ROZ = AGENCI.F_ROZ LEFT JOIN AGENCJE ON FAKTURY.ID_SPRZEDAWCY = AGENCJE.Id_agencji WHERE YEAR(FAKTURY.DATA_SPRZEDAZY)=@rok AND MONTH(FAKTURY.DATA_SPRZEDAZY)=@miesiac AND (AGENCJE.Id_agencji<>4 OR FAKTURY.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR FAKTURY.NUMER_ROZ ='POZ') AND FAKTURY.KOREKTA=0 AND FAKTURY.SystemKsiegowyId IN (@systemKsiegowy) GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, FAKTURY.ID_FAKTURY, FAKTURY.DATA_SPRZEDAZY, YEAR(FAKTURY.DATA_SPRZEDAZY), FAKTURY.NUMER_ROZ, FAKTURY.suma_zaplat, FAKTURY.Korekta ) T GROUP BY Agencja, Agent, ROK, MS, NrRoz -- zrob update dla tych ktorzy mieli korekty UPDATE F SET F.Netto=F.Netto+K.Netto, F.Vat=F.Vat+K.Vat, F.Brutto=F.Brutto+K.Brutto FROM @Faktury F, @Korekty K WHERE F.Agencja=K.Agencja AND F.Agent=K.Agent -- dodaj tych ktorzy mieli korekty a nie mieli zadnej sprzedazy INSERT INTO @Faktury SELECT * FROM @Korekty WHERE NrRoz NOT IN (SELECT NrRoz FROM @Faktury) SELECT * FROM @Faktury ORDER BY Agencja, Agent