Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Sacar de otra forma los resultados de una consulta

Estas en el tema de Sacar de otra forma los resultados de una consulta en el foro de SQL Server en Foros del Web. Hola a todos/as Tengo un pequeño problema a ver si me podeis dar alguna idea. Tengo esta consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT ...
  #1 (permalink)  
Antiguo 10/09/2014, 09:00
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Sacar de otra forma los resultados de una consulta

Hola a todos/as

Tengo un pequeño problema a ver si me podeis dar alguna idea.

Tengo esta consulta:

Código SQL:
Ver original
  1. SELECT [Grupo],
  2.       SUM([Nominal]) AS Nominal,    
  3.       CASE WHEN [Plazo] = '1M' THEN 'Plazo 1' WHEN [Plazo] = '3M' THEN 'Plazo 2' WHEN [Plazo] = '6M' THEN 'Plazo 3' END AS Plazo
  4.   FROM [TABLA]  
  5.   GROUP BY [Grupo], Plazo

Me saca bien los resultados, pero quisiera afinarla un poco más.

Habría alguna posibilidad de que el plazo me lo sacara como columnas dependiendo de si son 1 MES, 3 MESES o 6 MESES y la suma de esos Nominales??

A mi los resultados me salen asi:

Grupo Nominal Plazo
G1 12500 Plazo 1
. G2 2500 Plazo 1
.
.
G1 1500 Plazo 2
G2 2500 Plazo 2
.
.
.
G1 874123 Plazo 3
G2 90000 Plazo 3

Lo que me gustaría, si fuera posible, sería algo como esto:

Grupo Plazo 1 Plazo 2 Plazo 3 Total
G1 12500 1500 874123 888123
G2 20000 6000 15000 41000

Alguna idea de cómo enfocarlo??

Saludos y muchas gracias!

Última edición por gnzsoloyo; 10/09/2014 a las 09:49 Razón: El Título no concuerda
  #2 (permalink)  
Antiguo 10/09/2014, 09:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sacar de otra forma los resultados de una consulta

Código SQL:
Ver original
  1. SELECT grupo, SUM(plazo1),SUM(plazo2),SUM(plazo3) FROM
  2. (
  3. SELECT CASE WHEN plazo='Plazo 1' THEN SUM(Nominal) END AS plazo1,
  4. CASE WHEN plazo='Plazo 2' THEN SUM(Nominal) END AS plazo2,
  5. CASE WHEN plazo='Plazo 3' THEN SUM(Nominal) END AS plazo3,grupo, plazp FROM
  6. (
  7. SELECT [Grupo],
  8. SUM([Nominal]) AS Nominal,
  9. CASE WHEN [Plazo] = '1M' THEN 'Plazo 1' WHEN [Plazo] = '3M' THEN 'Plazo 2' WHEN [Plazo] = '6M' THEN 'Plazo 3' END AS Plazo
  10. FROM [TABLA]
  11. GROUP BY [Grupo], Plazo
  12. ) AS t1 GROUP BY grupo, plazo
  13. ) AS t2 GROUP BY grupo

con algo como eso :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/09/2014, 00:41
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Sacar de otra forma los resultados de una consulta

Perfecto Libras, como siempre!!!

Y ya, abusando de tu confianza: los plazos, me pueden venir a NULL. Si ocurre esto, lo que hago es ponerle 0 para luego sumar los plazos. El problema es que el total de la suma de las columnas, me da NULL (no me las suma). Lo que hago es:

Código SQL:
Ver original
  1. SELECT CASE WHEN SUM(plazo1) IS NULL THEN 0 ELSE SUM(plazo1) END AS '1 MES', CASE WHEN SUM(plazo2) IS NULL THEN 0 ELSE SUM(plazo2) END AS '3 MESES', CASE WHEN SUM(plazo3) IS NULL THEN 0 ELSE SUM(plazo3) END AS '6 MESES',
  2.             (SUM(plazo1) + SUM(plazo2) + SUM(plazo3)) AS TOTAL
  3. FROM Tabla
  4. GROUP BY ......

Habría alguna forma de sacar ese total??

Como siempre, muchas gracias y un saludo!

Última edición por gnzsoloyo; 11/09/2014 a las 08:02
  #4 (permalink)  
Antiguo 11/09/2014, 01:23
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Sacar de otra forma los resultados de una consulta

Creo que lo tengo (para quien le sirva)

Código SQL:
Ver original
  1. SELECT [Grupo], CASE WHEN SUM(plazo1) IS NULL THEN 0 ELSE SUM(plazo1) END AS '1 MES', CASE WHEN SUM(plazo2) IS NULL THEN 0 ELSE SUM(plazo2) END AS '3 MESES', CASE WHEN SUM(plazo3) IS NULL THEN 0 ELSE SUM(plazo3) END AS '6 MESES',
  2.             SUM(isnull(plazo1,0) + isnull(plazo2,0) + isnull(plazo3,0)) AS TOTAL
  3.   FROM (SELECT CASE WHEN plazo='Plazo 1' THEN SUM(Nominal) END AS plazo1,
  4.                 CASE WHEN plazo='Plazo 2' THEN SUM(Nominal) END AS plazo2,
  5.                 CASE WHEN plazo='Plazo 3' THEN SUM(Nominal) END AS plazo3,[Grupo], plazo
  6.         FROM(SELECT [Grupo], SUM([Nominal]) AS Nominal,
  7.                 CASE WHEN [Plazo] = '1M' THEN 'Plazo 1'
  8.                 WHEN [Plazo] = '3M' THEN 'Plazo 2'
  9.                 WHEN [Plazo] = '6M' THEN 'Plazo 3' END AS Plazo
  10.             FROM [TABLA]
  11.   GROUP BY [Grupo], Plazo) AS t1 GROUP BY [Grupo Inversor], plazo) AS t2 GROUP BY [Grupo]
Muchas gracias Libras por la ayuda prestada, como siempre.

Saludos!

Última edición por gnzsoloyo; 11/09/2014 a las 08:01
  #5 (permalink)  
Antiguo 11/09/2014, 07:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sacar de otra forma los resultados de una consulta

es mas simple de esta manera ;):

Código SQL:
Ver original
  1. SELECT grupo, SUM(plazo1),SUM(plazo2),SUM(plazo3) FROM
  2. (
  3. SELECT CASE WHEN plazo='Plazo 1' THEN SUM(isnull(Nominal,0)) END AS plazo1,
  4. CASE WHEN plazo='Plazo 2' THEN SUM(isnull(Nominal,0)) END AS plazo2,
  5. CASE WHEN plazo='Plazo 3' THEN SUM(isnull(Nominal,0)) END AS plazo3,grupo, plazp FROM
  6. (
  7. SELECT [Grupo],
  8. SUM([Nominal]) AS Nominal,
  9. CASE WHEN [Plazo] = '1M' THEN 'Plazo 1' WHEN [Plazo] = '3M' THEN 'Plazo 2' WHEN [Plazo] = '6M' THEN 'Plazo 3' END AS Plazo
  10. FROM [TABLA]
  11. GROUP BY [Grupo], Plazo
  12. ) AS t1 GROUP BY grupo, plazo
  13.  AS t2 GROUP BY grupo)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por gnzsoloyo; 11/09/2014 a las 08:02
  #6 (permalink)  
Antiguo 11/09/2014, 09:16
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Sacar de otra forma los resultados de una consulta

Jejeje.

Soy un pobre Developer de VB.NET/C# que se da de cabezazos cada vez que le toca hacer una SQL de más de cuatro o cinco líneas. Os veo a vosotros resolverlo tan fácil que me da envidia!

Muchas gracias Libras (como siempre)!!!!

Etiquetas: columna, dato, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:36.