DECLARE @QUERY NVARCHAR(MAX) DECLARE @CLAVECONCEPTO NVARCHAR(10) DECLARE @CONCEPTO NVARCHAR(100) DECLARE @IMPORTEGRAVADO NUMERIC(18,2) DECLARE @IMPORTEEXENTO NUMERIC(18,2) DECLARE @DEDUCCIONIMPORTE NUMERIC(18,2) DECLARE @PART1 NVARCHAR(MAX) --------------------Variables de Prueba --Declare @FECHA_I NVarchar(max) --Declare @FECHA_F NVarchar(max) --set @FECHA_I ='2022-01-01' --set @FECHA_F ='2022-01-30' SET @PART1='' SET @QUERY='' Declare @Book nvarchar(60) set @Book = (Select CVE_BLOQ from dbCONF_BLOQ where DES_BLOQ like 'gRecibosSAT') --//SE OBTIENEN LOS RECIBOS EN EL RANGO DE FECHAS INDICADO. Exec ('SELECT M.ORIGENSAT ,M.SERIESAT ,M.FOLIOSAT ,M.UUIDSAT ,M.RFCRECEPTORSAT ,M.RAZONSOCIALRECEPTORSAT ,M.SUBTOTALSAT AS PERCEPCIONES ,M.DESCUENTOSAT AS DEDUCCIONES ,M.TOTALSAT AS NETO ,M.MONEDASAT ,M.TIPOCAMBIOSAT ,R.VERSIONSAT ,R.TIPONOMINASAT ,R.SERIES_FOLIOSSAT ,R.TIPOREGIMENSAT ,R.TIPOMOVIMIENTOSAT ,R.DEPARTAMENTOSAT ,R.PUESTOSAT ,R.NUMEMPLEADOSAT ,R.PERIODICIDADPAGOSAT ,CONVERT(NVARCHAR(15),R.FECHAPAGOSAT,105) AS FECHAPAGOSAT ,CONVERT(NVARCHAR(15),R.FECHAINICIALPAGOSAT,105) AS FECHAINICIALPAGOSAT ,CONVERT(NVARCHAR(15),R.FECHAFINALPAGOSAT,105) AS FECHAFINALPAGOSAT ,ISNULL(R.NUMDIASPAGADOSSAT,0) AS NUMDIASPAGADOSSAT ,(CASE R.TIPOMOVIMIENTOSAT WHEN ''P'' THEN R.TIPOPERCEPCION_DEDUCCIONSAT WHEN ''D'' THEN R.TIPOPERCEPCION_DEDUCCIONSAT WHEN ''O'' THEN R.TIPOOTROPAGOSAT END) AS CLAVECONCEPTO ,(CASE R.TIPOMOVIMIENTOSAT WHEN ''P'' THEN R.CONCEPTOSAT WHEN ''D'' THEN R.CONCEPTOSAT WHEN ''O'' THEN R.OTROPAGOCONCEPTOSAT END) AS CONCEPTOSAT ,ISNULL(R.IMPORTEGRAVADOSAT,0) AS IMPORTEGRAVADOSAT ,(CASE R.TIPOMOVIMIENTOSAT WHEN ''P'' THEN ISNULL(R.IMPORTEEXENTOSAT,0) WHEN ''D'' THEN ISNULL(R.IMPORTEEXENTOSAT,0) WHEN ''O'' THEN ISNULL(R.OTROPAGOIMPORTESAT,0) END) AS IMPORTEEXENTOSAT ,ISNULL(R.DEDUCCIONIMPORTESAT,0) AS DEDUCCIONIMPORTESAT, ISNULL(R.IMPORTEGRAVADOSAT,0)+(CASE R.TIPOMOVIMIENTOSAT WHEN ''P'' THEN ISNULL(R.IMPORTEEXENTOSAT,0) WHEN ''D'' THEN ISNULL(R.IMPORTEEXENTOSAT,0) WHEN ''O'' THEN ISNULL(R.OTROPAGOIMPORTESAT,0) END)+ISNULL(R.DEDUCCIONIMPORTESAT,0) AS total INTO ##RECIBOS_1 FROM GMAESTRASAT M INNER JOIN DBENC'+@Book+' R ON R.CLAVENOMINASAT like M.CLAVENOMINASAT -------gRecibosSAT WHERE(M.NUM_DOC > 0) AND M.ORIGENSAT = ''RECIBOS DE NÓMINA'' AND DATEADD(DD,0,DATEDIFF(DD,0,M.FECHATIMBRADOSAT)) BETWEEN DATEADD(DD,0,DATEDIFF(DD,0,'''+@FECHA_I+''')) AND DATEADD(DD,0,DATEDIFF(DD,0,'''+@FECHA_F+''')) AND ISNULL(M.CANCELADOSAT,0) = 0') IF @@ROWCOUNT > 0 begin SELECT DISTINCT ORIGENSAT, SERIESAT, FOLIOSAT, RFCRECEPTORSAT, RAZONSOCIALRECEPTORSAT, PERCEPCIONES, DEDUCCIONES, NETO, MONEDASAT, TIPOCAMBIOSAT, VERSIONSAT, TIPONOMINASAT, SERIES_FOLIOSSAT, TIPOREGIMENSAT, DEPARTAMENTOSAT, PUESTOSAT, NUMEMPLEADOSAT, PERIODICIDADPAGOSAT, FECHAPAGOSAT, FECHAINICIALPAGOSAT, FECHAFINALPAGOSAT, UUIDSAT INTO ##RECIBOS_2 FROM ##RECIBOS_1 Declare @conceptos Nvarchar(max) set @conceptos= '' select @conceptos = @conceptos +'['+R.CONCEPTOSAT +'],' from ( SELECT DISTINCT CONCEPTOSAT as CONCEPTOSAT FROM ##RECIBOS_1 where conceptoSat is not null) as R set @conceptos = left(@conceptos , len( @conceptos)-1) exec ('select * into ##RECIBOS_3 FROM ##RECIBOS_1 R1 pivot( SUM(R1.total) for CONCEPTOSAT in('+@conceptos+') ) as PVT ') Declare @NomColum Nvarchar(max) set @NomColum= '' select @NomColum = @NomColum +',sum(isnull(R3.['+R.CONCEPTOSAT +'],0 ))AS ['+R.CLAVECONCEPTO+'-'+R.CONCEPTOSAT+']' from ( SELECT DISTINCT CLAVECONCEPTO AS CLAVECONCEPTO, CONCEPTOSAT AS CONCEPTOSAT FROM ##RECIBOS_1 where conceptoSat is not null) as R EXEC('SELECT R2.ORIGENSAT, R2.SERIESAT, R2.FOLIOSAT, R2.RFCRECEPTORSAT, R2.RAZONSOCIALRECEPTORSAT, R2.PERCEPCIONES, R2.DEDUCCIONES, R2.NETO, R2.MONEDASAT, R2.TIPOCAMBIOSAT, R2.VERSIONSAT, R2.TIPONOMINASAT, R2.SERIES_FOLIOSSAT, R2.TIPOREGIMENSAT, R2.DEPARTAMENTOSAT, R2.PUESTOSAT, R2.NUMEMPLEADOSAT, R2.PERIODICIDADPAGOSAT, R2.FECHAPAGOSAT, R2.FECHAINICIALPAGOSAT, R2.FECHAFINALPAGOSAT'+@NomColum+' from ##RECIBOS_2 R2 INNER JOIN ##RECIBOS_3 R3 ON R2.UUIDSAT=R3.UUIDSAT GROUP BY R2.ORIGENSAT, R2.SERIESAT, R2.FOLIOSAT, R2.RFCRECEPTORSAT, R2.RAZONSOCIALRECEPTORSAT, R2.PERCEPCIONES, R2.DEDUCCIONES, R2.NETO, R2.MONEDASAT, R2.TIPOCAMBIOSAT, R2.VERSIONSAT, R2.TIPONOMINASAT, R2.SERIES_FOLIOSSAT, R2.TIPOREGIMENSAT, R2.DEPARTAMENTOSAT, R2.PUESTOSAT, R2.NUMEMPLEADOSAT, R2.PERIODICIDADPAGOSAT, R2.FECHAPAGOSAT, R2.FECHAINICIALPAGOSAT, R2.FECHAFINALPAGOSAT ') drop table ##RECIBOS_2 drop table ##RECIBOS_3; end DROP TABLE ##RECIBOS_1;