Hola grupo necesito hacer una consulta para sacar
unos costos promedios he intentado hacerlo, sin exito.
Espero me puedan ayudar un poco con esto.
Estas son los script de las tres tablas que uso.
TABLA Documento
CREATE TABLE [dbo].[Documento] (
[NumeroMovimiento] [int] NOT NULL ,
[TipoDocumento] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[NumeroDocumento] [char] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[FechaDocumento] [smalldatetime] NOT NULL ,
[AlmacenOrigen] [char] (2) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[AlmacenDestino] [char] (2) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[TipoMovimiento] [char] (2) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[FechaMovimiento] [smalldatetime] NOT NULL ,
[CodigoCliente] [int] NULL ,
[CodigoProveedor] [int] NULL ,
[Estado] [smallint] NOT NULL ,
[CantidadTotal] [decimal](18, 0) NOT NULL ,
[CantidadInf] [decimal](18, 0) NOT NULL ,
[SerieCotizacion] [char] (3) COLLATE Modern_Spanish_CI_AS NULL ,
[CodigoCotizacion] [char] (7) COLLATE Modern_Spanish_CI_AS NULL ,
[PrecioTotal] [numeric](19, 4) NOT NULL ,
[PrecioInf] [numeric](19, 4) NOT NULL ,
[CodigoTransportista] [smallint] NULL ,
[CodigoAuto] [nvarchar] (10) COLLATE Modern_Spanish_CI_AS NULL ,
[TipoSalida] [smallint] NULL ,
[CodigoVendedor] [smallint] NULL ,
[Responsable] [smallint] NULL ,
[TipoDocumentoCompra] [tinyint] NULL ,
[CodigoMoneda] [smallint] NULL ,
[CodigoFormaPago] [smallint] NULL ,
[FechaVencimiento] [smalldatetime] NULL ,
[TextoSalida] [nvarchar] (50) COLLATE Modern_Spanish_CI_AS NULL ,
[NombreCliente] [nvarchar] (150) COLLATE Modern_Spanish_CI_AS NULL
) ON [PRIMARY]
Tabla Movimientos
CREATE TABLE [dbo].[Movimientos] (
[NumeroMovimiento] [int] NOT NULL ,
[CodigoArticulo] [char] (12) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[FechaMovimiento] [smalldatetime] NOT NULL ,
[Cantidad] [decimal](18, 0) NOT NULL ,
[CodigoMoneda] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Precio] [money] NULL ,
[Costo] [money] NULL ,
[Descuento1] [money] NULL ,
[Descuento2] [money] NULL
) ON [PRIMARY]
Tabla CostosPromedios
CREATE TABLE [dbo].[CostosPromedios] (
[CodigoArticulo] [nvarchar] (12) COLLATE Modern_Spanish_CI_AS NULL,
[Fecha] [smalldatetime] NULL ,
[Cantidad] [decimal](10, 2) NULL ,
[PrecioPromedio] [money] NULL
) ON [PRIMARY]
Ahora yo hago la sgte consulta de un solo articulo
en la cual saco sus movimientos, lo que quiero hacer
es que cuando el movimiento sea un ingreso el costo
se repita en los movimientos que siguen hasta que allá
otro ingreso y para los movimientos anteriores a un ingreso
en ese rango de fecha sacar el ultimo costo de la tabla
Costos Promedios.
SELECT TOP 100 PERCENT dbo.Documento.NumeroMovimiento,
dbo.Movimientos.CodigoArticulo, CASE WHEN TipoMovimiento='S' THEN
-dbo.Movimientos.Cantidad ELSE dbo.Movimientos.Cantidad END Cantidad,
tipomovimiento,dbo.Documento.FechaDocumento,dbo.Movimientos.Costo
FROM dbo.Documento INNER JOIN
dbo.Movimientos ON dbo.Documento.NumeroMovimiento dbo.Movimientos.NumeroMovimiento
WHERE (dbo.Documento.FechaDocumento
BETWEEN '01/02/2004' AND '29/02/2004') AND
(dbo.Movimientos.CodigoArticulo = 'TRMEAF50 01')
ORDER BY dbo.Documento.FechaDocumento, dbo.documento.numeromovimiento
Espero haberme explicado bien.
Gracias por su tiempo
Salu2
Leer las respuestas