none
como filtrar duplicados en sentencia inner joins cuando uso order by RRS feed

  • Pregunta

  • disculpen tengo un script que trae registros de diferentes tablas, pero ésta devuelve duplicados porque cada usuario tiene 'n' agendas 

    SELECT
    		FORMAT(Agenda2FechaInicio ,'yyyy/MM/dd HH:mm tt') AS 'Hora de Inicio',
    		PacienteApellidoPaterno+' '+PacienteApellidoMaterno +' ' +PacienteNombre AS 'Nombre del Paciente',
    		AG2.PacienteExpediente AS Expediente,
    		datediff(YYYY,PacienteFechaNacimiento,getdate()) As Edad,
    		
    		atc.Agenda2TipoConsultaDescripcion AS Consulta,
    		'__________' AS Diagnosticos, '__________' AS 'Motivo de Alta','__________' AS 'Contrareferencia (Indicar Nivel)',
    		AG2.DirectorioInstitutoNumeroEmpleado AS Usuario
    		FROM Agenda2 AG2
    		INNER JOIN dbo.Agenda2Parametros ON AG2.Agenda2ParametrosID = dbo.Agenda2Parametros.Agenda2ParametrosID
    		INNER JOIN Agenda2ProcedimientosSolicitados 
    		ON AG2.Agenda2ID = dbo.Agenda2ProcedimientosSolicitados.Agenda2ID	
    		INNER JOIN Pacientes
    		ON AG2.PacienteExpediente = Pacientes.PacienteExpediente
    		--INNER JOIN	dbo.Agenda2Parametros ap ON ap.Agenda2ParametrosID = AG2.Agenda2ParametrosID
    		INNER JOIN	dbo.Agenda2TipoConsulta atc ON atc.Agenda2TipoConsultaID = AG2.Agenda2TipoConsultaID
    		WHERE Agenda2Cancelada = 0 
    		AND (Agenda2FechaInicio BETWEEN CONVERT (DATETIME,'2016-08-04 00:00:00',102) 
    				AND  CONVERT(DATETIME,'2016-08-04 23:59:59',102)
    			)
    		AND AG2.Agenda2LugarRealizacionID=40181
    el asunto es que usando distinct me pide agrupar, pero para campos que no exiten en mis tablas; solo se agregan para requerimiento extra del usuario como indicaría esa agrupacion  (
    '__________' AS 'Motivo de Alta'
    )


    La programacion en Microsoft cada ves se torna inalcanzable

    jueves, 4 de agosto de 2016 19:59

Respuestas

Todas las respuestas

  • Pero el distinct no obliga hacer un group by, si tuvieras una funcion de agregacion, como un count o sum si es requerido 

    Harold Chia

    jueves, 4 de agosto de 2016 20:49
  • alfonso_tecnicopa,

    {?} el asunto es que usando distinct me pide agrupar, pero para campos que no exiten en mis tablas; solo se agregan para requerimiento extra del usuario como indicaría esa agrupacion  (

    DISTINCT no requiere que las columnas que se encuentran en la lista de selección estén agrupadas, quizá te refieres a GROUP BY, pero dado que la columna [Motivo de Alta]' es un literal no requiere de agrupación. Aun así, no me queda claro lo que comentas, te agradeceré dar mayor claridad a tu requerimiento.

    jueves, 4 de agosto de 2016 20:51
  • Pero el distinct no obliga hacer un group by, si tuvieras una funcion de agregacion, como un count o sum si es requerido 

    Harold Chia

    ok pero me piden hacer order by Nombre, y es aquí donde truena el script

    La programacion en Microsoft cada ves se torna inalcanzable

    jueves, 4 de agosto de 2016 20:52
  • alfonso_tecnicopa,

    Te sugiero ordenar tus ideas, primero mencionas problemas con un DISTINCT y ahora con ORDER BY, si estas confundido nos confundes de igual manera. 

    {?} ok pero me piden hacer order by Nombre, y es aquí donde truena el script

    ¿Qué es tronar? ¿Obtienes algún mensaje de error?, te agradeceré un poco de apoyo para ayudarte. Por lo pronto yo no veo que tu lista de selección (SELECT) tenga una columna llamada Nombre (por la que intentas ordenar)


    jueves, 4 de agosto de 2016 20:56
  • ya encontré mi error, intentaba hacer el order by 
    Agenda2FechaInicio cuando debía hacer usando el alias

    La programacion en Microsoft cada ves se torna inalcanzable

    jueves, 4 de agosto de 2016 21:12