📄 Tam SQL Kodu (Referans)

Analiz eklerken buradan kod parçalarını kopyalayabilirsiniz

CREATE PROCEDURE [dbo].[sp_InsertIntoPLASIYER_RAPOR_AYLIK_TOPLAM_IADE]
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 @DEF VARCHAR(50)
    DECLARE @CITY 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),
        CITY 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, 
        TOPLAM2024 FLOAT,
        TOPLAM2023 FLOAT,
        TOPLAM2022 FLOAT,
        PLAS INT,
        TPLAS VARCHAR(50)
    );

    -- Tablonun içerigini temizle
    TRUNCATE TABLE [UNIVERSALDB].[dbo].[PLASIYER_RAPOR_AYLIK_TOPLAM_IADE];

    SET @SAYAC = 1 
    SET @TOPLAM = ISNULL((SELECT COUNT(*) FROM dbo.PLAS_SEHIR_SIRALI_IADE), 0);

    WHILE @SAYAC <= @TOPLAM
    BEGIN 
        SELECT @CITY = CITY, @MAHLAS = PLAS, @PLAS = LOGICALREF 
        FROM dbo.PLAS_SEHIR_SIRALI_IADE 
        WHERE SIRA = @SAYAC;

        SET @AYLIK = 1;
		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;
        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_SEHIR_TOPLAM_IADE
                WHERE MONTH_ = @AYLIK AND LOGICALREF = @PLAS AND CITY = @CITY;

				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_SEHIR_TOPLAM_IADE
                WHERE YEAR_ = YEAR(DATEADD(YEAR, -1, GETDATE())) AND LOGICALREF = @PLAS AND CITY = @CITY;

                SELECT @TOPLAM2 = TUTAR 
                FROM dbo.PLAS_RAPOR_YILLIK_SEHIR_TOPLAM_IADE 
                WHERE YEAR_ = YEAR(DATEADD(YEAR, -2, GETDATE())) AND LOGICALREF = @PLAS AND CITY = @CITY;
        INSERT INTO @TempTable
        (MAHLAS, DEF, CITY, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS)
        VALUES (@MAHLAS, @DEF, @CITY, @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);
        
        -- 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].[PLASIYER_RAPOR_AYLIK_TOPLAM_IADE]
    (MAHLAS, DEF, CITY, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS)
    SELECT 
        MAHLAS, DEF, CITY, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, 
        TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS 
    FROM @TempTable;

    
END

➕ Yeni Kod Analizi Ekle

📋 Mevcut Analizler (0)

Henüz kod analizi eklenmemiş.

Yukarıdaki formu kullanarak ilk analizi ekleyin.