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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| USE [VISOR]
GO
SET LANGUAGE FRENCH
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE
@I INT = 1,
@J INT = 1,
@NOMCE NVARCHAR(MAX) = '',
@NOMRANG1 NVARCHAR(MAX) = ''
IF OBJECT_ID ('TEMPDB..#PIVOT') IS NOT NULL
DROP TABLE #PIVOT
CREATE TABLE #PIVOT -- TABLE TEMPORAIRE POUR LE PIVOT
(
CE NVARCHAR(MAX),
R1 NVARCHAR(MAX),
R2 NVARCHAR(MAX),
E INT,
C INT,
T INT
);
IF OBJECT_ID ('TEMPDB..#WHILECE') IS NOT NULL
DROP TABLE #WHILECE
CREATE TABLE #WHILECE -- TABLE TEMPORAIRE POUR LA BOUCLE WHILE DEPUIS TABLE PIVOT ET AJOUT LIGNE TOTAL GÉNÉRAL
(
CE NVARCHAR(MAX),
[RANG 1] NVARCHAR(MAX),
[RANG 2] NVARCHAR(MAX),
ENCADRANTS INT,
COMPAGNONS INT,
TOTAL INT
);
WITH REQUETE AS -- VUE DE LA REQUETE DE BASE
(
SELECT DISTINCT
E.CHAMP4 AS [CE],
ISNULL(S.GERANT, S.LIBELLE) AS [RANG 1], -- PERMUTE ENTREPRISE ET ST POUR RANG 1
CASE
WHEN (S.GERANT IS NULL)
THEN ''
WHEN (S.GERANT IS NOT NULL)
THEN S.LIBELLE
END AS [RANG 2], -- PERMUTE ENTREPRISE ET ST POUR RANG 2
E.CHAMP2 AS FONCTION,
COUNT(DISTINCT E.IDUTILISATEUR) AS TL -- COLONNE TOTAL
FROM
EVENEMENTS E
FULL JOIN
SOCIETES S ON E.IDSOCIETE = S.IDSOCIETE
FULL JOIN
LECTEURS L ON E.IDLECTEUR = L.IDLECTEUR
FULL JOIN
UTILISATEURS U ON E.IDUTILISATEUR = U.IDBASE
WHERE
--E.DATEEVENEMENT > CAST(CONVERT(VARCHAR,DATEADD(DD,0,'08/09/2016'),103) + ' ' + '11:30' AS SMALLDATETIME) AND E.DATEEVENEMENT < CAST(CONVERT(VARCHAR,'08/09/2016',103) + ' ' + '12:00' AS SMALLDATETIME)
--AND
(L.APB =1)
AND U.PRESENCE = 1 -- SELECTION TOURNIQUETS EN ENTRÉE VIA ANTI PASSBACK ET PRESENCE
AND S.IDSOCIETE <> 150
GROUP BY E.CHAMP4,S.LIBELLE,S.GERANT,E.CHAMP2
)
INSERT INTO #PIVOT
SELECT COALESCE(CE,''), COALESCE([RANG 1],''), COALESCE([RANG 2],''), COALESCE([ENCADRANT],''), COALESCE([COMPAGNON],''), SUM(COALESCE([ENCADRANT],'')+COALESCE([COMPAGNON],''))
FROM REQUETE
PIVOT
(SUM(TL) FOR FONCTION IN ([ENCADRANT],[COMPAGNON])) AS P -- RESULTAT DU PIVOT
GROUP BY CE,[RANG 1],[RANG 2],ENCADRANT,COMPAGNON
--SELECT * FROM #PIVOT
WHILE (SELECT IDCE FROM CE WHERE IDCE = @I) = @I
BEGIN
SET @NOMCE = (SELECT NOMCE FROM CE WHERE IDCE = @I)
INSERT INTO #WHILECE
SELECT CE,R1,R2,E,C,T
FROM #PIVOT PT
JOIN CE C
ON C.NOMCE = PT.CE
WHERE C.IDCE = @I
UNION ALL
SELECT 'TOTAL'+' '+@NOMCE,'','',SUM(E),SUM(C),SUM(T)
FROM #PIVOT PT
JOIN CE C
ON C.NOMCE = PT.CE
WHERE C.IDCE = @I
SET @I= @I+1
END
SELECT * FROM #WHILECE
UNION ALL
SELECT 'TOTAL GENERAL','','',SUM(ENCADRANTS)/2,SUM(COMPAGNONS)/2,SUM(TOTAL)/2
FROM #WHILECE |
Partager