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

Resultado CASE en una misma linea..

Estas en el tema de Resultado CASE en una misma linea.. en el foro de SQL Server en Foros del Web. Hola Tengo esta consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT     a . Clave , a . texto1 , a . descripcion , ...
  #1 (permalink)  
Antiguo 08/07/2011, 12:41
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Resultado CASE en una misma linea..

Hola Tengo esta consulta

Código SQL:
Ver original
  1. SELECT
  2.     a.Clave,a.texto1,a.descripcion,a.descripcion2,a.Modelo,a.Numero2,a.Moneda, c.idperiodo,
  3.     SUM(B.OrdenadaVenta) oRDENADOVENTA, SUM(C.Existencia) AS Existencia,
  4.     SUM(C.Existencia-B.OrdenadaVenta) AS DisponibilidadTotal,
  5.  
  6. SUM(CASE WHEN C.ALMACEN='01' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_mty,
  7. SUM(CASE WHEN C.ALMACEN='03' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_Gdl,
  8. SUM(CASE WHEN C.ALMACEN='07' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_Mex
  9.  
  10.         FROM articulo a, ArticuloSaldoAlmacen B, ArticuloExistencia C
  11. WHERE A.Clave = B.Articulo AND A.CLAVE=C.ARTICULO AND B.ARTICULO=C.ARTICULO AND a.CLAVE='6160624'
  12.          AND c.idperiodo='2011/07'
  13. GROUP BY  a.Clave,a.texto1,a.descripcion,a.descripcion2,a.Modelo,a.Numero2,a.Moneda,c.idperiodo, c.almacen

el problema es que me arroja 3 lineas de resultados cuando quiero que solo quede enn una..

este es el resultado:

6160624 RG5-5581 RG5-5581 OEM TRANSFER ROLLER LJ 2200 RG5-5581 OEM TRANSFER ROLLER LJ 2200 HP 27.26000 DL 2011/07 0.00000 0.00000 0.00000 0.00000 NULL NULL
6160624 RG5-5581 RG5-5581 OEM TRANSFER ROLLER LJ 2200 RG5-5581 OEM TRANSFER ROLLER LJ 2200 HP 27.26000 DL 2011/07 0.00000 10.00000 10.00000 NULL 10.00000 NULL
6160624 RG5-5581 RG5-5581 OEM TRANSFER ROLLER LJ 2200 RG5-5581 OEM TRANSFER ROLLER LJ 2200 HP 27.26000 DL 2011/07 0.00000 0.00000 0.00000 NULL NULL NULL



solo quiero que me junte todo en una linea.
  #2 (permalink)  
Antiguo 08/07/2011, 12:55
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: Resultado CASE en una misma linea..

Try this :)

Código SQL:
Ver original
  1. SELECT clave,texto1,descripcion,descripcion2,modelo,numero2,moneda,idperiodo,SUM(ordenadoventa),SUM(existencia),SUM(disponibilidadtotal),SUM(Disponibilidad_mty), SUM(Disponibilidad_Gdl), SUM(Disponibilidad_Mex)
  2. FROM(
  3.     SELECT
  4.         a.Clave,a.texto1,a.descripcion,a.descripcion2,a.Modelo,a.Numero2,a.Moneda, c.idperiodo,
  5.         SUM(B.OrdenadaVenta) oRDENADOVENTA, SUM(C.Existencia) AS Existencia,
  6.         SUM(C.Existencia-B.OrdenadaVenta) AS DisponibilidadTotal,
  7.      
  8.     SUM(CASE WHEN C.ALMACEN='01' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_mty,
  9.     SUM(CASE WHEN C.ALMACEN='03' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_Gdl,
  10.     SUM(CASE WHEN C.ALMACEN='07' THEN c.Existencia-b.OrdenadaVenta END )AS Disponibilidad_Mex
  11.      
  12.             FROM articulo a, ArticuloSaldoAlmacen B, ArticuloExistencia C
  13.     WHERE A.Clave = B.Articulo AND A.CLAVE=C.ARTICULO AND B.ARTICULO=C.ARTICULO AND a.CLAVE='6160624'
  14.              AND c.idperiodo='2011/07'
  15.     GROUP BY  a.Clave,a.texto1,a.descripcion,a.descripcion2,a.Modelo,a.Numero2,a.Moneda,c.idperiodo, c.almacen
  16. ) t1 GROUP BY clave,texto1,descripcion,descripcion2,modelo,numero2,moneda,idperiodo

Regards,
Libras
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/07/2011, 13:43
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Resultado CASE en una misma linea..

Trate con tu consulta y lo q hace es ponerlo en la misma linea pero esta triplicando los valores..

Es decir si hay existencia de 5 piezas.. da un resultado de 15
  #4 (permalink)  
Antiguo 08/07/2011, 13:55
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: Resultado CASE en una misma linea..

Pues no sumes por el campo existencia :), jejeje, te esta repitiendo los resultados porque al agrupar por almacen cada almacen tiene una cantidad diferente de productos :) y por eso te regresa 3 columnas :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 08/07/2011, 13:59
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Resultado CASE en una misma linea..

si eso mismo pense y pense dividirlo pero tambien en la "disponibilidad_mty', 'disponibilidad_gdl' y 'disponiblidad_mex' esta triplicando los datos... trate de sacarlo dividiendo entre 3 pero no me da resultados correctos...

que más puedo hacer para obtener los datos??... en una sola consulta o con subconsultas

Última edición por Inicia; 08/07/2011 a las 15:08

Etiquetas: case, resultados
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 03:52.