none
unir resultados de varias filas en una sola

    Question

  • buenas tardes y gracias por leer el post, mi situacione s la siguiente

    tengoun stored procedure donde hago 3 SELECT, los cuales me regresan casi los mismos datos pero con un valor que los identifica entre si el cual nombre NoImp(numero de implementacion), al hacer los 3 select con union me regresa los 3 valores en direntes filas y quisiera que me los regresera en la misma fila, mi stored procedure es el siguiente

    ALTER PROCEDURE [dbo].[sp_repimp1]
    @IdRepAC Varchar(20)
    AS
    BEGIN
    SELECT i.FechaImp, FechaRev, Evidencia, Implementado, Nombre
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 1 AND Responsable = 'AU'
    UNION
    SELECT i.FechaImp, FechaRev, Evidencia, Implementado, Nombre
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 2 AND Responsable = 'AU'
    UNION
    SELECT i.FechaImp, FechaRev, Evidencia, Implementado, Nombre
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 3 AND Responsable = 'AU'
    END
    
    

    hay alguna forma de unior estos tres select en una sola fila?

    NOTA:en este ejemplo no puse los alias de cada campo pero en el store original lo tiene agregado

    saludos

    Wednesday, March 16, 2011 8:26 PM

Answers

  • Hola.

    Sí, claro. Te lo esbozo para que lo completes:

    ALTER PROCEDURE [dbo].[sp_repimp1]
    @IdRepAC Varchar(20)
    AS
    BEGIN
    
    declare @fechaImp_1 datetime, @fecharev_1 datetime, ...
    declare @fechaImp_2 datetime, @fecharev_2 datetime, ...
    declare @fechaImp_3 datetime, @fecharev_3 datetime, ...
    
    SELECT @fechaImp_1 = i.FechaImp, @fecharev_1 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 1 AND Responsable = 'AU'
    
    
    SELECT @fechaImp_2 = i.FechaImp, @fecharev_2 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 2 AND Responsable = 'AU'
    
    SELECT @fechaImp_3 = i.FechaImp, @fecharev_3 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 3 AND Responsable = 'AU'
    
    --Y ahora las devuelves todas, en una select sin from ni where
    select FechaImp_1 = @fechaImp_1, FechaRev_1 = @fecharev_1,..., 
    FechaImp_2 = @fechaimp_2,...
    FechaImp_3 = @fechaimp_3,...
    
    END
    

     


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    Thursday, March 17, 2011 1:51 PM

All replies

  • Hola.

    Una forma muy sencilla, asigna cada campo a una variable, ejecutando las tres consultas por separado. Luego, en una última sentencia, devuelves el recordset con todas las variables.

    Si no lo logras, nos dices, hay otras vías.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    Wednesday, March 16, 2011 8:41 PM
  • gracias por resppnder qwalgrande, tienes algun ejemplo de como hacer esto?

    de antemano muchas gracias

    Wednesday, March 16, 2011 9:44 PM
  • hola , derrepente esto te sirve ,esplica como pasar filas a columnas

    http://www.elguille.info/colabora/NET2006/sebaconte_Pivot_SQL2005.htm

    Saludos.


    Lima-Perú
    Thursday, March 17, 2011 1:32 PM
  • Hola.

    Sí, claro. Te lo esbozo para que lo completes:

    ALTER PROCEDURE [dbo].[sp_repimp1]
    @IdRepAC Varchar(20)
    AS
    BEGIN
    
    declare @fechaImp_1 datetime, @fecharev_1 datetime, ...
    declare @fechaImp_2 datetime, @fecharev_2 datetime, ...
    declare @fechaImp_3 datetime, @fecharev_3 datetime, ...
    
    SELECT @fechaImp_1 = i.FechaImp, @fecharev_1 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 1 AND Responsable = 'AU'
    
    
    SELECT @fechaImp_2 = i.FechaImp, @fecharev_2 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 2 AND Responsable = 'AU'
    
    SELECT @fechaImp_3 = i.FechaImp, @fecharev_3 = FechaRev,... 
    FROM Implementacion i, RepAC r, Usuario_repAC c, Usuario u
    WHERE r.IdRepAC = c.IdRepAC AND u.NoNomina = c.NoNomina AND r.IdRepAC = i.IdRepAC 
    AND r.IdRepAC = @IdRepAC AND NoImp = 3 AND Responsable = 'AU'
    
    --Y ahora las devuelves todas, en una select sin from ni where
    select FechaImp_1 = @fechaImp_1, FechaRev_1 = @fecharev_1,..., 
    FechaImp_2 = @fechaimp_2,...
    FechaImp_3 = @fechaimp_3,...
    
    END
    

     


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    Thursday, March 17, 2011 1:51 PM
  • thx qwalgrande, me fue de mucha ayuda!! saludos
    Thursday, March 17, 2011 2:43 PM