Merhaba ;
Aşagıda belirttigim sorguyu denersiniz,ben bu sorgu ile işlemlerimi tamamlıyorum..
DECLARE @LOGICALREF INT
DECLARE @JOURNALNO INT
DECLARE @count INT
DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @OlDMONTH INT
DECLARE @OLDYEAR INT
------------------------------------
SET @MONTH=2 --- Bu alana ay bilgisi yazılır
SET @YEAR=2016 --- Bu alana yıl bilgisi yazılır
SET @OlDMONTH=1 --- Bu alana önceki ay bilgisi yazılır
SET @OLDYEAR=2016 --- Bu alana önceki ay bir önceki yıla dengk geliyorsa yıl bilgisi yazılır
------------------------------------
DECLARE JOURNALNO_NUMBER CURSOR FOR
------------------------------------
SELECT LOGICALREF
FROM LG_001_01_EMFICHE WITH(NOLOCK)
WHERE CANCELLED=0
AND TRCODE NOT IN (5,8,0) AND MONTH(DATE_)=@MONTH AND YEAR(DATE_)=@YEAR
AND BRANCH IN (4) -- İşyerleri filtresi verilecek ise belirtilir.
ORDER BY DATE_,TRCODE,LOGICALREF
------------------------------------
SELECT @count=count(JOURNALNO) FROM LG_001_01_EMFICHE WHERE YEAR(DATE_)=@OLDYEAR AND MONTH(DATE_)=@OlDMONTH
AND BRANCH IN (4)
IF @count>0 BEGIN
select @JOURNALNO=MAX(CASE WHEN JOURNALNO<> 0 THEN JOURNALNO ELSE 1 END )+1
FROM LG_001_01_EMFICHE WHERE YEAR(DATE_)=@OLDYEAR AND MONTH(DATE_)=@OlDMONTH AND BRANCH IN (4)
-- BRANCH IN (0,3,4) -- İşyerleri filtresi verilecek ise belirtilir.
END
IF @count=0 BEGIN
SET @JOURNALNO=1
END
------------------------------------
OPEN JOURNALNO_NUMBER
FETCH NEXT FROM JOURNALNO_NUMBER
INTO @LOGICALREF ---
WHILE @@FETCH_STATUS = 0
BEGIN
SET ROWCOUNT 0
------------------------------------
IF @JOURNALNO>1 BEGIN
yasak LG_001_01_EMFICHE SET JOURNALNO=@JOURNALNO+1 WHERE LOGICALREF=@LOGICALREF
select @JOURNALNO=@JOURNALNO
END
yasak LG_001_01_EMFICHE SET JOURNALNO=@JOURNALNO WHERE LOGICALREF=@LOGICALREF
select @JOURNALNO=@JOURNALNO+1
------------------------------------
FETCH NEXT FROM JOURNALNO_NUMBER
INTO @LOGICALREF
END
CLOSE JOURNALNO_NUMBER
DEALLOCATE JOURNALNO_NUMBER