SQL Server - combinar 2 o mas filas en una

 
Vista:
Imágen de perfil de Diego
Val: 10
Ha aumentado su posición en 7 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

combinar 2 o mas filas en una

Publicado por Diego (5 intervenciones) el 22/10/2018 22:34:06
Estimados,
tengo que resolver la siguiente casuistica en sql server 2000:


nro_tarjeta.................fecha.................hora
290.................22/10/2018.................9:30
290.................22/10/2018.................11:30
290.................22/10/2018.................14:00
290.................22/10/2018.................17:18
330.................22/10/2018.................8:30
330.................22/10/2018.................18:30


Lo que necesito obtener es un unico registro con la siguiente salida:


nro_tarjeta.................fecha.................horas
290.................22/10/2018.................9:30, 11:30, 14:00, 17:18
330.................22/10/2018.................8:30, 18:30


Es decir, una especie de Pivote de la tabla agrupada por nro_tarjeta y fecha.

No me doy cuenta como escribir el query con Pivote.

Veo que existe una funcion STUFF() FOR XML PATH('') pero es a partir de SQL Server 2005. :(

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 10
Ha aumentado su posición en 7 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

combinar 2 o mas filas en una

Publicado por Diego (5 intervenciones) el 23/10/2018 20:29:46
Gracias, lo reviso.

Por ahora lo resolví a la vieja escuela como una función propia de SQL Server.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE FUNCTION GetRegistros
(
@nro_tarjeta varchar(10),
@fecha varchar(10)
)
RETURNS varchar(100)
AS
BEGIN
    	DECLARE @hora varchar(5)
	DECLARE @salida varchar(100)
 
	DECLARE qHoras CURSOR FOR
	select convert(varchar(5), fecha, 108) as hora
	from fichadas
	where nro_tarjeta=@nro_tarjeta
	and convert(varchar(10), fecha, 103)=@fecha
	order by hora
 
	OPEN qHoras
	FETCH NEXT FROM qHoras INTO @hora
	SET @salida=''
	WHILE @@FETCH_STATUS = 0
   	BEGIN
		SET @salida=@salida + @hora + ' | '
		FETCH NEXT FROM qHoras INTO @hora
	END
 
	CLOSE qHoras
	DEALLOCATE qHoras
	RETURN(@salida)
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar