agrupar hasta 3 registros en 1

24/07/2006 - 12:11 por ***Joselitux*** | Informe spam
Hola a todos

Tengo una aplicación que guarda los datos personales de un cliente en hasta
tres registros consecutivos con un mismo número de cliente. (No lo hice yo,
por si acaso lo piensan). Y ahora tengo que programar algunas cositas
añadidas pero necesito una vista que me muestre los datos del cliente en
solo un registro y no en tres, como hace ahora. Lo curioso es que cada
cliente puede tener 1, 2 o 3 registros como máximo (mínimo 1 y máximo 3)

Al anterior programador habría que colgarlo de los pulgares. La tabla que
tengo es esta:


ID_TABLA NUMERO_CLIENTE DATO_CLIENTE
34 2 Jose
antonio
35 2
Martinez Campos
36 2 Comercial
Seguros
37 5 Pedro
Javier
38 5 Tecnico
Electricista
...


La vista que pretendo mostraría los datos de la siguiente manera:

ID_TABLA NUMERO CLIENTE DATO1 DATO2
DATO3
34 2 Jose
antonio martinez campos Comercial seguros



Llevo un tiempo loco con el tema pero ninguna aproximación resulta. ¿alguna
idea?
 

Leer las respuestas

#1 Alejandro Mesa
24/07/2006 - 15:45 | Informe spam
Trata:

select
min(ID_TABLA) as ID_TABLA,
NUMERO_CLIENTE,
max(case when rank = 1 then DATO_CLIENTE end) as DATO1,
max(case when rank = 2 then DATO_CLIENTE end) as DATO2,
max(case when rank = 3 then DATO_CLIENTE end) as DATO3
from
(
select a.NUMERO_CLIENTE, a.ID_TABLA, a.DATO_CLIENTE, count(*) as rank
from
dbo.t1 as a inner join dbo.t1 as b
on b.NUMERO_CLIENTE = a.NUMERO_CLIENTE
and b.ID_TABLA <= a.ID_TABLA
group by
a.NUMERO_CLIENTE, a.ID_TABLA, a.DATO_CLIENTE
) as t
group by
NUMERO_CLIENTE
go


AMB


"***Joselitux***" wrote:

Hola a todos

Tengo una aplicación que guarda los datos personales de un cliente en hasta
tres registros consecutivos con un mismo número de cliente. (No lo hice yo,
por si acaso lo piensan). Y ahora tengo que programar algunas cositas
añadidas pero necesito una vista que me muestre los datos del cliente en
solo un registro y no en tres, como hace ahora. Lo curioso es que cada
cliente puede tener 1, 2 o 3 registros como máximo (mínimo 1 y máximo 3)

Al anterior programador habría que colgarlo de los pulgares. La tabla que
tengo es esta:


ID_TABLA NUMERO_CLIENTE DATO_CLIENTE
34 2 Jose
antonio
35 2
Martinez Campos
36 2 Comercial
Seguros
37 5 Pedro
Javier
38 5 Tecnico
Electricista



La vista que pretendo mostraría los datos de la siguiente manera:

ID_TABLA NUMERO CLIENTE DATO1 DATO2
DATO3
34 2 Jose
antonio martinez campos Comercial seguros



Llevo un tiempo loco con el tema pero ninguna aproximación resulta. ¿alguna
idea?





Preguntas similares