HC_

Untitled

HC_
Mar 13th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. -- =============================================
  2. -- Author: OSCAR NAVARRO
  3. -- Create date: <Create Date,,>
  4. -- Description: <Description,,>
  5. -- =============================================
  6. ALTER PROCEDURE [dbo].[SP_CONTROL_CLIENTES](@IDCLIENTE BIGINT)
  7. AS
  8. BEGIN
  9. DECLARE @ATTR_CABECERA VARCHAR(MAX) = '',@SQL VARCHAR(MAX), @ATTR_PVT VARCHAR(MAX);
  10. SET @ATTR_CABECERA = (SELECT STUFF((SELECT ' ISNULL(SUM("'+X.NOMBRE_CONTROL+'"),0) "' + X.NOMBRE_CONTROL +'", ' FROM MS_CONFIG_CLIENTE X WHERE X.ID_CLIENTE = @IDCLIENTE ORDER BY X.ORDEN FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''));
  11. SET @ATTR_PVT = (SELECT STUFF((SELECT ' "'+X.NOMBRE_CONTROL+'", ' FROM MS_CONFIG_CLIENTE X WHERE X.ID_CLIENTE = @IDCLIENTE ORDER BY X.ORDEN FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''));
  12. SET @SQL = '
  13. SELECT (SELECT CAST( ( CAST(COUNT(C.VALOR) AS FLOAT) / TOTAL_CONTROLES_SOL) * 100 AS NUMERIC(19,2)) FROM MS_CONFIG_CLIENTE A
  14. INNER JOIN MS_CONTROL_CLIENTE B ON A.ID_CLIENTE = B.ID_CLIENTE
  15. INNER JOIN MS_CONTROL_CLIENTE_VALUES C ON A.ID = C.ID_CONFIG AND B.ID = C.ID_INICIATIVA
  16. WHERE A.RESPONSABILIDAD = 1
  17. AND C.VALOR = 1
  18. AND A.ID_CLIENTE = '+ CAST(@IDCLIENTE AS VARCHAR(20)) + '
  19. AND B.ID = IDINICIATIVA) CUMPLIMIENTO_SOL
  20. ,(SELECT CAST( ( CAST(COUNT(C.VALOR) AS FLOAT) / TOTAL_CONTROLES_CLI) * 100 AS NUMERIC(19,2)) FROM MS_CONFIG_CLIENTE A
  21. INNER JOIN MS_CONTROL_CLIENTE B ON A.ID_CLIENTE = B.ID_CLIENTE
  22. INNER JOIN MS_CONTROL_CLIENTE_VALUES C ON A.ID = C.ID_CONFIG AND B.ID = C.ID_INICIATIVA
  23. WHERE A.RESPONSABILIDAD = 0
  24. AND C.VALOR = 1
  25. AND A.ID_CLIENTE = '+ CAST(@IDCLIENTE AS VARCHAR(20)) + '
  26. AND B.ID = IDINICIATIVA) CUMPLIMIENTO_CLI
  27. ,*
  28. FROM (
  29. SELECT
  30. B.NOMBRE_INICIATIVA
  31. ,A.NOMBRE_CONTROL
  32. ,C.VALOR
  33. ,B.ID AS IDINICIATIVA
  34. ,(SELECT COUNT(1) FROM MS_CONFIG_CLIENTE X WHERE X.ID_CLIENTE = A.ID_CLIENTE AND X.RESPONSABILIDAD = 1) TOTAL_CONTROLES_SOL
  35. ,(SELECT COUNT(1) FROM MS_CONFIG_CLIENTE X WHERE X.ID_CLIENTE = A.ID_CLIENTE AND X.RESPONSABILIDAD = 0) TOTAL_CONTROLES_CLI
  36. ,(SELECT COUNT(1) FROM MS_CONFIG_CLIENTE X WHERE X.ID_CLIENTE = A.ID_CLIENTE) TOTAL_CONTROLES
  37. FROM MS_CONFIG_CLIENTE A
  38. INNER JOIN MS_CONTROL_CLIENTE B ON A.ID_CLIENTE = B.ID_CLIENTE
  39. INNER JOIN MS_CONTROL_CLIENTE_VALUES C ON A.ID = C.ID_CONFIG AND B.ID = C.ID_INICIATIVA
  40. WHERE A.ID_CLIENTE = '+ CAST(@IDCLIENTE AS VARCHAR(20)) + '
  41.  
  42. ) AS DATOS PIVOT
  43. (
  44. SUM(VALOR)
  45. FOR NOMBRE_CONTROL IN (#CONTROLES#)
  46. )AS PVT_TABLE
  47. ORDER BY IDINICIATIVA DESC';
  48.  
  49. SET @ATTR_PVT = SUBSTRING(@ATTR_PVT,0,LEN(@ATTR_PVT))
  50. SET @SQL = REPLACE(@SQL,'#CONTROLES#', @ATTR_PVT);
  51. EXEC(@SQL);
  52.  
  53. END
Add Comment
Please, Sign In to add comment