Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Colocar el resultado en una columna u Otra (https://www.clubdelphi.com/foros/showthread.php?t=32896)

Carmelo Cash 20-06-2006 17:17:17

Colocar el resultado en una columna u Otra
 
Hola foro:
Tengo una tabla con dos campos, COLUMNA e IMPORTE, donde columna puede ser 1,2 o 3, Ejemplo

COLUMNA-IMPORTE
1--------------100
2---------------10
3--------------(50)

necesito hacer una consulta que devuelva como resultado

Sueldos---Otros---Retenciones
----100
-------------10
--------------------------(50)

O sea, que coloque el resultado de IMPORTE en cada columna según el campo Columna

Sería algo como

Select IMPORTE (si columna es 1),IMPORTE (si columna es 2), IMPORTE(si columna es 3)

Bueno, desde ya perdón por el delirio y gracias por su atención.

Neftali [Germán.Estévez] 20-06-2006 17:33:58

Esto debe funcionar:
Código SQL [-]
select IMPORTE as Sueldos, NULL as Otros, NULL as Retenciones from tabla
where COlumna=1
union
select NULL as Sueldos, IMPORTE as Otros, NULL as Retenciones from tabla
where COlumna=2
union
select NULL as Sueldos, NULL as Otros, IMPORTE as Retenciones from tabla
where COlumna=3

Carmelo Cash 20-06-2006 17:48:50

Gracias
 
SI, anda. Cómo no se me ocurrió!!!:eek:
Mejor que me vaya a dormir un rato.
Gracias

Carmelo Cash 20-06-2006 20:42:35

Otro comentario y pedido 2
 
Pude solucionar utilizando la consulta sugerida por Neftali, pero sin las opciones NULL, porque me daba un error
Data type unknown

la solución que encontré fué reemplazarlos por 0.00. Con o (cero) también aparecía el mismo error. ¿?.

Quedó así.

select IMPORTE as Sueldos, 0.00 as Otros, 0.00 as Retenciones from tabla
where COlumna=1
union
select 0.00 as Sueldos, IMPORTE as Otros, 0.00 as Retenciones from tabla
where COlumna=2
union
select 0.00 as Sueldos, 0.00 as Otros, IMPORTE as Retenciones from tabla
where COlumna=3


Pedido 2


Se puede obtener en una consulta los tres totales en una sola fila?.
Utilizo group by en cada consulta pero me hace un total por cada una de ellas.

la idea es que quede
Importe---Otros---Retenciones
----100-----10-----------(50)

y me sale
Importe---Otros---Retenciones
----100
-------------10
--------------------------(50)

Queda claro que esta segunda consulta es para mostrar los totales por cada columna. Se puede hacer con 3 consultas, pero con una sola también se debe poder hacer (creo).

Como siempre muchas gracias por su atención.

bismarck_sierra 21-06-2006 01:53:23

Que tal Carmelo

Si utilizas Firebird 1.5, sería algo así para obtener un solo renglón

SELECT SUM(CASE columna WHEN 1 THEN importe ELSE 0 END) AS sueldos,
SUM(CASE columna WHEN 2 THEN importe ELSE 0 END) AS otros, SUM(CASE columna WHEN 3 THEN importe ELSE 0 END) AS retenciones FROM tabla WHERE empleado = 1

Espero que sea lo que necesitas

Saludos
Bismarck


La franja horaria es GMT +2. Ahora son las 12:15:21.

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