1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| CREATE TABLE REF_CLE_COT(
[SRC_CLE_COT] [VARCHAR](100) NULL
,[CODE_CLE_COT] [BIGINT] NOT NULL
,[LIB_CLE_COT] [VARCHAR](150) NULL
)
INSERT INTO REF_CLE_COT (SRC_CLE_COT, CODE_CLE_COT, LIB_CLE_COT) VALUES ('TOTO', 17, 'TATA')
INSERT INTO REF_CLE_COT (SRC_CLE_COT, CODE_CLE_COT, LIB_CLE_COT) VALUES ('PIPO', 1005, 'PAPA')
CREATE TABLE #ID_COT_TMP(
ID [INT] NOT NULL IDENTITY(1, 1) PRIMARY KEY
,ID_COT [INT] NOT NULL
)
INSERT INTO #ID_COT_TMP (ID_COT) VALUES (17)
CREATE TABLE #COT_TMP(
[ID_COT] [BIGINT] NOT NULL,
[SRC_CLE_COT] [VARCHAR](100) NULL,
[LIB_CLE_COT] [VARCHAR](150) NULL,
[EXERCICE] [INT] NOT NULL
)
INSERT INTO #COT_TMP (ID_COT, EXERCICE, SRC_CLE_COT, LIB_CLE_COT) VALUES (17, 2013, 'TOTO', 'TATA')
INSERT INTO #COT_TMP (ID_COT, EXERCICE, SRC_CLE_COT, LIB_CLE_COT) VALUES (17, 2014, 'TOTO', 'TATA')
DECLARE @I [INT]
DECLARE @LIMITE [INT]
DECLARE @QUOTIENT [BIGINT]
DECLARE @ID_COT [BIGINT]
SET @LIMITE = (SELECT COUNT(*) FROM #ID_COT_TMP)
SET @I = 1
SET @QUOTIENT = (SELECT FLOOR (MAX (CODE_CLE_COT) / 100) FROM REF_CLE_COT)+1
WHILE @I < @LIMITE + 1
BEGIN
SET @QUOTIENT =( ((@QUOTIENT + 100000) * 100) + 5)
SET @ID_COT = (SELECT ID_COT FROM #ID_COT_TMP WHERE ID = @I)
UPDATE #COT_TMP
SET ID_COT = @QUOTIENT
WHERE ID_COT = @ID_COT
INSERT INTO #REF_CLE_COT (CODE_CLE_COT, SRC_CLE_COT, LIB_CLE_COT)
SELECT DISTINCT ID_COT AS CODE_CLE_COT, SRC_CLE_COT, LIB_CLE_COT
FROM #COT_TMP C
WHERE ID_COT = @QUOTIENT
SET @QUOTIENT=(@QUOTIENT/100)+1
SET @I = @I + 1
PRINT @I;
END |
Partager