← Detay Sayfası
Nesne Düzenle
|
sp_RAPOR_AYLIK_PRIM_HIZLI
İlgili Uygulama
-- Seçiniz --
SQL Server
Nesne Türü
View
Stored Procedure
Trigger
Job
Nesne Adı
Bu nesne dönem devrinden etkileniyor mu? (Örn: İçinde _01_ gibi sabit dönem kodu var mı?)
Genel Kullanım Amacı ve Notlar
Tam SQL Kodu
CREATE PROCEDURE [dbo].[sp_RAPOR_AYLIK_PRIM_HIZLI] AS BEGIN DECLARE @SAYAC INT DECLARE @AYLIK TINYINT DECLARE @TOPLAM TINYINT DECLARE @TOPLAM1 FLOAT DECLARE @TOPLAM2 FLOAT DECLARE @PLAS INT DECLARE @MAHLAS VARCHAR(50) DECLARE @MNG VARCHAR(50) DECLARE @DEF VARCHAR(50) DECLARE @KONTROL INT DECLARE @DEGER FLOAT DECLARE @JN FLOAT = 0 DECLARE @FB FLOAT = 0 DECLARE @MR FLOAT = 0 DECLARE @AP FLOAT = 0 DECLARE @MY FLOAT = 0 DECLARE @JU FLOAT = 0 DECLARE @JL FLOAT = 0 DECLARE @AU FLOAT = 0 DECLARE @SP FLOAT = 0 DECLARE @OC FLOAT = 0 DECLARE @NV FLOAT = 0 DECLARE @DC FLOAT = 0 DECLARE @PLSD VARCHAR(50) DECLARE @CURRENT_MONTH TINYINT = MONTH(GETDATE()) -- Bu ayi al -- Geçici bir tablo olustur DECLARE @TempTable TABLE ( MAHLAS VARCHAR(50), DEF VARCHAR(50), JAN FLOAT, FEB FLOAT, MAR FLOAT, APR FLOAT, MAY FLOAT, JUN FLOAT, JUL FLOAT, AUG FLOAT, SEP FLOAT, OCT FLOAT, NOV FLOAT, DEC FLOAT, TOPLAM FLOAT, TOPLAM2023 FLOAT, TOPLAM2022 FLOAT, PLAS INT, TPLAS VARCHAR(50), MANG VARCHAR(50) ); -- Tablonun içerigini temizle TRUNCATE TABLE [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_PRIM SET @SAYAC = 1 SET @TOPLAM = ISNULL((SELECT COUNT(*) FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI]), 0); WHILE @SAYAC <= @TOPLAM BEGIN SELECT @MAHLAS = PLAS, @PLAS = LOGICALREF ,@MNG=MANG FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI] WHERE SIRA = @SAYAC; SET @AYLIK = 1; WHILE @AYLIK <= 12 BEGIN IF @AYLIK <= @CURRENT_MONTH -- Sadece geçerli ay ve öncesine bak BEGIN SELECT @DEGER = ISNULL(TUTAR, 0), @PLSD = PLS FROM dbo.PlasRaporAylikPrim WHERE MONTH_ = @AYLIK AND LOGICALREF = @PLAS; IF @@ROWCOUNT = 0 BEGIN SET @DEGER = 0; END IF @AYLIK = 1 SET @JN = @DEGER; ELSE IF @AYLIK = 2 SET @FB = @DEGER; ELSE IF @AYLIK = 3 SET @MR = @DEGER; ELSE IF @AYLIK = 4 SET @AP = @DEGER; ELSE IF @AYLIK = 5 SET @MY = @DEGER; ELSE IF @AYLIK = 6 SET @JU = @DEGER; ELSE IF @AYLIK = 7 SET @JL = @DEGER; ELSE IF @AYLIK = 8 SET @AU = @DEGER; ELSE IF @AYLIK = 9 SET @SP = @DEGER; ELSE IF @AYLIK = 10 SET @OC = @DEGER; ELSE IF @AYLIK = 11 SET @NV = @DEGER; ELSE IF @AYLIK = 12 SET @DC = @DEGER; END SET @AYLIK = @AYLIK + 1; END SELECT @TOPLAM1 = TUTAR FROM dbo.PLAS_RAPOR_YILLIK_PRIM_TOPLAMLARI2 WHERE DEFINITION_ LIKE '%'+LTRIM(@MAHLAS)+'%'; SELECT @TOPLAM2 = TUTAR FROM dbo.PLAS_RAPOR_YILLIK_PRIM_TOPLAMLARI3 WHERE DEFINITION_ LIKE '%'+LTRIM(@MAHLAS)+'%'; INSERT INTO @TempTable (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG) VALUES (@MAHLAS, @DEF, @JN, @FB, @MR, @AP, @MY, @JU, @JL, @AU, @SP, @OC, @NV, @DC, (@JN + @FB + @MR + @AP + @MY + @JU + @JL + @AU + @SP + @OC + @NV + @DC), @TOPLAM1, @TOPLAM2, @PLAS, @PLSD, @MNG); -- Degerleri sifirlama SET @JN = 0; SET @FB = 0; SET @MR = 0; SET @AP = 0; SET @MY = 0; SET @JU = 0; SET @JL = 0; SET @AU = 0; SET @SP = 0; SET @OC = 0; SET @NV = 0; SET @DC = 0; SET @SAYAC = @SAYAC + 1; END -- Geçici tablodan ana tabloya veri ekleme INSERT INTO [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_PRIM (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, YIL) SELECT MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, 2024 FROM @TempTable; END
Oluşturulma: 23.12.2025 07:15
Son Güncelleme: 23.12.2025 17:28
İptal
Nesneyi Sil
Değişiklikleri Kaydet