📄 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.