📄 Tam SQL Kodu (Referans)
Analiz eklerken buradan kod parçalarını kopyalayabilirsiniz
CREATE PROCEDURE [dbo].[sp_RAPOR_AYLIK_IADE_HIZLI]
@YIL INT
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
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.PLAS_RAPOR_AYLIK_IADE_TOPLAM
WHERE MONTH_ = @AYLIK AND LOGICALREF = @PLAS AND YEAR_ = @YIL;
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_IADE_TOPLAM
WHERE YEAR_ = @YIL - 1 AND LOGICALREF = @PLAS;
SELECT @TOPLAM2 = TUTAR
FROM dbo.PLAS_RAPOR_YILLIK_IADE_TOPLAM
WHERE YEAR_ = @YIL - 2 AND LOGICALREF = @PLAS;
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_IADE
(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, @YIL
FROM @TempTable;
END
➕ Yeni Kod Analizi Ekle
📋 Mevcut Analizler (0)
Henüz kod analizi eklenmemiş.
Yukarıdaki formu kullanarak ilk analizi ekleyin.