Genel Bilgiler

SQL Server
Stored Procedure
✅ Etkilenmez
23.12.2025 07:15
23.12.2025 16:10

Notlar

Düzenle

Henüz not eklenmemiş.

+ Not ekle

İstatistikler

0
Kod Analizi
198
Satır
4
Kullandığı
2
Kullanan

Kullandığı Nesneler (4)

USES_VIEW
USES_VIEW
USES_VIEW
REFERENCES

Kullanan Nesneler (2)

CALLS_SP
CALLS_SP

Bağımlılık Ağacı

Etki Ağacı

Tam SQL Kodu

Düzenle
CREATE PROCEDURE [dbo].[sp_RAPOR_AYLIK_SATIS_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 dbo.PLAS_SIRALI_TUMU WHERE PLAS IS NOT NULL), 0);
    WHILE @SAYAC <= @TOPLAM
    BEGIN 
        SELECT @MAHLAS = PLAS, @PLAS = LOGICALREF ,@MNG=MANG
        FROM dbo.PLAS_SIRALI_TUMU
        WHERE PLAS IS NOT NULL AND 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_TOPLAM 
                WHERE MONTH_ = @AYLIK AND LOGICALREF = @PLAS AND YEAR_ = @YIL;
				

				IF @@ROWCOUNT = 0
                BEGIN
                    SET @DEGER = 0;
                END

                SET @KONTROL = CHARINDEX('WEB', @PLSD);
                IF @KONTROL = 0 
                    SET @DEF = 'BIREYSEL';
                ELSE 
                    SET @DEF = 'FIRMA';

                SELECT @TOPLAM1 = TUTAR 
                FROM dbo.PLAS_RAPOR_YILLIK_TOPLAM 
                WHERE YEAR_ = @YIL - 1 AND LOGICALREF = @PLAS;

                SELECT @TOPLAM2 = TUTAR 
                FROM dbo.PLAS_RAPOR_YILLIK_TOPLAM 
                WHERE YEAR_ = @YIL - 2 AND LOGICALREF = @PLAS;

                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

        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_SATIS
    (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;

    -- Toplamlari ekleme
    INSERT INTO [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_SATIS
    (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, YIL)
    SELECT 
        MAHLAS,
        'TOPLAM' AS DEF,
        SUM(JAN) AS JAN,
        SUM(FEB) AS FEB,
        SUM(MAR) AS MAR,
        SUM(APR) AS APR,
        SUM(MAY) AS MAY,
        SUM(JUN) AS JUN,
        SUM(JUL) AS JUL,
        SUM(AUG) AS AUG,
        SUM(SEP) AS SEP,
        SUM(OCT) AS OCT,
        SUM(NOV) AS NOV,
        SUM([DEC]) AS [DEC],
        SUM(TOPLAM2024) AS TOPLAM,
        SUM(TOPLAM2023) AS TOPLAM2023,
        SUM(TOPLAM2022) AS TOPLAM2022,
        NULL AS PLAS,
        NULL AS TPLAS,
        MANG,
        @YIL
    FROM [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_SATIS
    GROUP BY MAHLAS, MANG;

    -- Bos satirlari ekleme
    INSERT INTO [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_SATIS
    (MAHLAS, DEF, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, TOPLAM2024, TOPLAM2023, TOPLAM2022, PLAS, TPLAS, MANG, YIL)
    SELECT 
        MAHLAS,
        'Z' AS DEF,
        NULL AS JAN,
        NULL AS FEB,
        NULL AS MAR,
        NULL AS APR,
        NULL AS MAY,
        NULL AS JUN,
        NULL AS JUL,
        NULL AS AUG,
        NULL AS SEP,
        NULL AS OCT,
        NULL AS NOV,
        NULL AS DEC,
        NULL AS TOPLAM,
        NULL AS TOPLAM2023,
        NULL AS TOPLAM2022,
        NULL AS PLAS,
        NULL AS TPLAS,
        MANG,
        @YIL
    FROM [UNIVERSALDB].[dbo].RAPOR_PLAS_AYLIK_SATIS
    WHERE DEF = 'TOPLAM';
END

Kodun Çalışma Mantığı (Adım Adım)

Analiz Ekle/Düzenle

Henüz bu nesne için bir analiz girilmemiş.

İlk Analizi Ekle