Ayuda con consulta

15/07/2004 - 10:44 por Ricardo Uribe | Informe spam
Hola Grupo, una gran pregunta tengo esta consulta lo que
deseo es que un articulo que tenga ingresos, devoluciones
o salidas me salga en la misma fila, pero con mi consulta
me sale en una fila diferente cada tipo de movimiento

Articulo Ingreso Devolucion Salidas
XXX 1
XXX 2
XXX 1

Quisiera que me salga

Articulo Ingreso Devolucion Salidas
XXX 1 1 2

ya que ese proceso tengo que hacerlo en Visual Basic
y quisiera que salga de la misma consulta, no se si se
pueda a mi parecer no hay forma, pero quiero su sabia
opinion..

SELECT Movimientos.Codigoarticulo,Articulo.Descripcion,
0 AS SaldoDiaAnterior,
CASE WHEN Documento.TipoMovimiento='I' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Ingresos,
CASE WHEN Documento.TipoMovimiento='D' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Devoluciones,
CASE WHEN Documento.TipoMovimiento='S' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS
Salidas,
CASE WHEN Documento.TipoMovimiento='J' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Ajuste
FROM Movimientos INNER JOIN
Articulo ON
Articulo.CodigoArticulo = Movimientos.CodigoArticulo INNER JOIN
Documento ON
Documento.NumeroMovimiento = Movimientos.NumeroMovimiento
WHERE (Documento.FechaDocumento=@Fecha and Documento.TipoMovimiento='S' )
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='D')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='I')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='J')
GROUP BY Movimientos.Codigoarticulo,Articulo.Descripcion,
Documento.TipoMovimiento
ORDER BY Movimientos.CodigoArticulo
GO
 

Leer las respuestas

#1 Liliana Sorrentino
15/07/2004 - 17:56 | Informe spam
Hola Ricardo,
Solo modificando el GROUP BY y la función SUM en el CASE de cada columna:

SELECT Movimientos.Codigoarticulo,Articulo.Descripcion, 0 AS
SaldoDiaAnterior,
SUM(CASE WHEN Documento.TipoMovimiento='I' THEN sum(Movimientos.Cantidad)
ELSE 0 END) AS Ingresos,
SUM(CASE WHEN Documento.TipoMovimiento='D' THEN sum(Movimientos.Cantidad)
ELSE 0 END) AS Devoluciones,
SUM(CASE WHEN Documento.TipoMovimiento='S' THEN sum(Movimientos.Cantidad)
ELSE 0 END) AS Salidas,
SUM(CASE WHEN Documento.TipoMovimiento='J' THEN sum(Movimientos.Cantidad)
ELSE 0 END) AS Ajuste
FROM Movimientos
INNER JOIN Articulo ON Articulo.CodigoArticulo Movimientos.CodigoArticulo
INNER JOIN Documento ON Documento.NumeroMovimiento Movimientos.NumeroMovimiento
WHERE (Documento.FechaDocumento=@Fecha and Documento.TipoMovimiento='S' )
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='D')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='I')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='J')
GROUP BY Movimientos.Codigoarticulo,Articulo.Descripcion
ORDER BY Movimientos.CodigoArticulo
GO

Liliana.

"Ricardo Uribe" escribió en el mensaje
news:
Hola Grupo, una gran pregunta tengo esta consulta lo que
deseo es que un articulo que tenga ingresos, devoluciones
o salidas me salga en la misma fila, pero con mi consulta
me sale en una fila diferente cada tipo de movimiento

Articulo Ingreso Devolucion Salidas
XXX 1
XXX 2
XXX 1

Quisiera que me salga

Articulo Ingreso Devolucion Salidas
XXX 1 1 2

ya que ese proceso tengo que hacerlo en Visual Basic
y quisiera que salga de la misma consulta, no se si se
pueda a mi parecer no hay forma, pero quiero su sabia
opinion..

SELECT Movimientos.Codigoarticulo,Articulo.Descripcion,
0 AS SaldoDiaAnterior,
CASE WHEN Documento.TipoMovimiento='I' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Ingresos,
CASE WHEN Documento.TipoMovimiento='D' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Devoluciones,
CASE WHEN Documento.TipoMovimiento='S' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS
Salidas,
CASE WHEN Documento.TipoMovimiento='J' THEN
sum(Movimientos.Cantidad) ELSE 0 END AS Ajuste
FROM Movimientos INNER JOIN
Articulo ON
Articulo.CodigoArticulo = Movimientos.CodigoArticulo INNER JOIN
Documento ON
Documento.NumeroMovimiento = Movimientos.NumeroMovimiento
WHERE (Documento.FechaDocumento=@Fecha and Documento.TipoMovimiento='S' )
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='D')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='I')
OR (Documento.FechaDocumento=@Fecha
AND Documento.TipoMovimiento='J')
GROUP BY Movimientos.Codigoarticulo,Articulo.Descripcion,
Documento.TipoMovimiento
ORDER BY Movimientos.CodigoArticulo
GO


Preguntas similares