Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/01/2014, 12:28
Avatar de aid_val
aid_val
 
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 11 años
Puntos: 5
Respuesta: Comparar registros de dos consultas.

Me he enfrentado a otro problema señor Libras

estolo tengo qeu hacer dinamico segun mi aplicativo. Lo meti todo a un procedimiento almacenado de la siguiente manera

Código SQL:
Ver original
  1. USE [LF_20DIC]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[PA_RPT_DUPLICADOS_RFC]    Script Date: 01/21/2014 10:59:21 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. ALTER PROC [dbo].[PA_RPT_DUPLICADOS_NOMBRE]
  10.  
  11. @AÑOQUIN nVARCHAR(50)
  12.  
  13.   AS
  14. DECLARE @QUERY nVARCHAR(MAX),@QUERY2 nVARCHAR(MAX),@QUERY3 nVARCHAR(MAX)
  15.  
  16. BEGIN try
  17. BEGIN tran
  18.  
  19. IF OBJECT_ID('tempdb..#duplicados') IS NOT NULL DROP TABLE #duplicados
  20. IF OBJECT_ID('tempdb..#rfc') IS NOT NULL DROP TABLE #rfc
  21.  
  22. SET @QUERY = 'SELECT * INTO #rfc FROM
  23. (SELECT PRD.NUMREC,RFCH,PRD.NOMBRE,PRD.IMPNET,PRD.CENRES,PRD.IDTIPNOM, PRD.FECHPAGO,PRD.BANCO,PRD.INSTR,PRD.NUMCTA,PRD.CODIGO,COUNT(RFCH) CANTIDAD FROM(
  24. SELECT RFCH RFC, NOMBRE ,  COUNT (RFCH) CANTIDAD,IDDESNOM
  25. FROM '+@AÑOQUIN +' PRD
  26. WHERE IDDESNOM = ''11''
  27. GROUP BY RFCH,NOMBRE,IDDESNOM
  28. HAVING COUNT (RFCH) >= 2
  29. ) DUPLICADOS INNER JOIN '+@AÑOQUIN +' PRD ON DUPLICADOS.RFC = PRD.RFCH
  30. WHERE PRD.IDDESNOM LIKE ''11''GROUP BY RFCH,PRD.CENRES,PRD.BANCO,PRD.BANCO,PRD.NOMBRE,PRD.NUMREC,PRD.IMPNET,PRD.CODIGO,PRD.IDTIPNOM,PRD.FECHPAGO,PRD.INSTR,PRD.NUMCTA) TODOS
  31. INNER JOIN tipnomina NOM ON TODOS.IDTIPNOM = NOM.id_nomina
  32. ORDER BY TODOS.RFCH'
  33. EXEC sp_executesql @QUERY
  34.  
  35. SET @QUERY2 = 'SELECT * INTO #duplicados FROM (SELECT PRD.NUMREC,RFCH ,PRD.NOMBRE,PRD.IMPNET,PRD.CENRES,PRD.IDTIPNOM, PRD.FECHPAGO,PRD.BANCO,PRD.INSTR,PRD.NUMCTA,PRD.CODIGO,COUNT(RFCH) CANTIDAD FROM(
  36. SELECT NOMBRE ,  COUNT (NOMBRE) CANTIDAD
  37. FROM '+@AÑOQUIN +' PRD
  38. WHERE IDDESNOM = ''11''
  39. GROUP BY NOMBRE
  40. HAVING COUNT (NOMBRE) >= 2
  41. ) DUPLICADOS INNER JOIN '+@AÑOQUIN +' PRD ON DUPLICADOS.NOMBRE  = PRD.NOMBRE  
  42. WHERE PRD.IDDESNOM LIKE ''11''GROUP BY RFCH,PRD.CENRES,PRD.BANCO,PRD.BANCO,PRD.NOMBRE,PRD.NUMREC,PRD.IMPNET,PRD.CODIGO,PRD.IDTIPNOM,PRD.FECHPAGO,PRD.INSTR,PRD.NUMCTA
  43. ) TODO
  44. INNER JOIN tipnomina NOM ON TODO.IDTIPNOM   = NOM.id_nomina
  45. ORDER BY TODO.NOMBRE'
  46. EXEC sp_executesql @QUERY2
  47. SET @QUERY3 = 'SELECT * FROM #duplicados AS t1 LEFT JOIN #rfc AS t2 ON (t1.nombre=t2.nombre) WHERE t2.nombre IS  NULL'
  48. EXEC sp_executesql @QUERY3
  49.  
  50. COMMIT
  51.  
  52. END TRY
  53. BEGIN CATCH
  54.     ROLLBACK
  55.     PRINT error_message()
  56. END CATCH

pero me arroja un error
Cita:
(20 filas afectadas)

(60 filas afectadas)
El nombre de objeto '#duplicados' no es válido.
A que se debe?