Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Se puede hacer con SQL? (https://www.clubdelphi.com/foros/showthread.php?t=78197)

tarco35 28-03-2012 13:44:29

Se puede hacer con SQL?
 
Hola... tengo 1 tabla ordenada por "grupo"
grupo texto valor
a la 2
a le 1
a li 4
b lo 1
b al 3

se puede montar mediante sql, de alguna forma, que el resultado de la consulta sea:
grupo texto1 valor1 texto2 valor2
a la 2 le 1
a li 4
b lo 1 al 3
y que siga ordenada por grupo.
gracias de antemano.

Caro 28-03-2012 17:10:05

Hola tarco32, la unica forma que se me ocurre es algo asi:

Código SQL [-]
Select t.grupo, (Select First 1 t1.texto ||'   '|| t1.valor From tabla t1
                       Where t1.grupo=t.grupo) as Valor1,
       (Select first 1 skip 1 t1.texto ||'   '|| t1.valor From tabla t1
        Where t1.grupo=t.grupo) as Valor2,
       (Select first 1 skip 2 t1.texto ||'   '|| t1.valor From tabla t1
        Where t1.grupo=t.grupo) as Valor3
From tabla t
group by t.grupo
order by t.grupo

solo que tienes que saber la cantidad de campos que necesitas, en caso de que algun grupo no tenga el segundo o tercer registro el resultado sera null, el ejemplo esta hecho en firebird.

Saluditos

tarco35 28-03-2012 18:04:45

Código SQL [-]
Select t.grupo, (Select First 1 t1.texto ||'   '|| t1.valor From tabla t1 Where t1.grupo=t.grupo) as Valor1,
                      (Select first 1 skip 1 t1.texto ||'   '|| t1.valor From tabla t1 Where t1.grupo=t.grupo) as Valor2,
                      (Select first 1 skip 2 t1.texto ||'   '|| t1.valor From tabla t1 Where t1.grupo=t.grupo) as Valor3
From tabla t
group by t.grupo
order by t.grupo
(Delphi 6 y BDE)
Gracias por tu ayuda.... imagino que "t" es mi tabla_origen y "t1" seria tabla_destino, pero el resultado final no sale como necesito:
Grupo Texto1 Valor1 Texto2 Valor2
como tendria que cambiar la sentencia...
Gracias

Caro 28-03-2012 18:31:27

Cita:

Empezado por tarco35 (Mensaje 428679)
Gracias por tu ayuda.... imagino que "t" es mi tabla_origen y "t1" seria tabla_destino, pero el resultado final no sale como necesito:
Grupo Texto1 Valor1 Texto2 Valor2
como tendria que cambiar la sentencia...
Gracias

Hola de nuevo, t y t1 son alias hacia tu misma tabla, en el ejemplo estoy concatenando los dos campos, si quieres separado, solo tienes que devolver un solo campo en los select y darle su respectivo alias.

Código SQL [-]
Select t.grupo, (Select First 1 t1.texto From tabla t1
                       Where t1.grupo=t.grupo) as Texto1,
       (Select First 1 t1.valor From tabla t1
         Where t1.grupo=t.grupo) as Valor1,
       (Select first 1 skip 1 t1.texto From tabla t1
        Where t1.grupo=t.grupo) as Texto2,
       (Select first 1 skip 1 t1.valor From tabla t1
        Where t1.grupo=t.grupo) as Valor2
From tabla t
group by t.grupo
order by t.grupo

seguro hay una mejor forma de hacerlo, solo espera y ya nos iran corrigiendo.

Saluditos

tarco35 28-03-2012 18:33:56

gracias por la ayuda... en cuento pueda lo pruebo otra vez y te comento.
Un saludo.

tarco35 01-04-2012 14:21:59

pues no me funciona... y no se porqué... me da errores de sentencia y que tiene que pertenecer al group... no se...

Casimiro Noteví 01-04-2012 16:53:00

Cita:

Empezado por tarco35 (Mensaje 429084)
pues no me funciona... y no se porqué... me da errores de sentencia y que tiene que pertenecer al group... no se...

Pues con esa descripción "tan clara" de los errores que has dado, me temo que será un "poco" complicado ayudarte ;)


La franja horaria es GMT +2. Ahora son las 14:32:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi