📄 Tam SQL Kodu (Referans)
Analiz eklerken buradan kod parçalarını kopyalayabilirsiniz
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
➕ Yeni Kod Analizi Ekle
📋 Mevcut Analizler (0)
Henüz kod analizi eklenmemiş.
Yukarıdaki formu kullanarak ilk analizi ekleyin.