Hola compañeros!
Vuelvo a solicitar su asesoría sobre este tema, es en la misma consulta que publiqué la semana pasada, quize eliminar gran parte del código que en realidad era redundante y así poder ir depurando los resultados de cada caso.
El query que les presento tiene como objetivo mostrar ventas detalladas (Folio,fecha,vendedor,cliente,artículo,fabricante…), se desea que si el usuario lo requiere pueda ingresar como parámetros un rango de fechas (FechaInicial y FechaFinal), el cliente y el código del artículo.
Y he leído algunos temas como este y en realidad no me han funcionado las sugerencias que proporcionan. Al ejecutar el query me arroja el siguiente error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Must specify table to select from.
2). [Microsoft][SQL Server Native Client 11.0][SQL Server]Statement ‘’ (SWEI) (s) could not be prepared.
Este es mi query:
DECLARE @FechaInicial AS DATE
DECLARE @FechaFinal AS DATE
SELECT @FechaInicial = T0.DocDate, @FechaFinal = T0.DocDate From OINV T0 Where T0.DocDate = '[%0]' AND T0.DocDate = '[%1]'
SET @FechaInicial = CONVERT(DATETIME, '[%0]', 112)
SET @FechaFinal = CONVERT(DATETIME, '[%1]', 112)
SELECT T1.SlpCode 'Código Vendedor', T1.SlpName 'Nombre Vendedor', T0.CardCode 'Código Cliente', T0.CardName 'Nombre del Cliente',
CASE T0.ObjType
WHEN 13 THEN 'FACTURA'
END 'Tipo Documento',
T0.DocNum 'Folio', ' ' 'Documento al que aplica', FORMAT(T0.DocDate, 'yyyy-MM-dd') 'Fecha Factura', T2.ItemCode 'Código Artículo', T2.Dscription 'Descripción del Artículo',
T4.ItmsGrpNam 'Grupo del artículo', T5.FirmName 'Nombre del fabricante',
CASE T0.CANCELED
WHEN 'C' THEN '-' + CONVERT(VARCHAR(20), T2.Quantity)
WHEN 'N' THEN T2.Quantity
WHEN 'Y' THEN T2.Quantity
END 'Cantidad',
CASE T0.CANCELED
WHEN 'C' THEN '-' + CONVERT(VARCHAR(20), T2.LineTotal)
WHEN 'N' THEN T2.LineTotal
WHEN 'Y' THEN T2.LineTotal
END 'Total Partida',
CASE T0.CANCELED
WHEN 'C' THEN '-' + CONVERT(VARCHAR(20), (T2.StockPrice * T2.Quantity))
WHEN 'N' THEN (T2.StockPrice * T2.Quantity)
WHEN 'Y' THEN (T2.StockPrice * T2.Quantity)
END 'Costo por partida'
FROM OINV T0
INNER JOIN OSLP T1 ON T0.SlpCode=T1.SlpCode
INNER JOIN INV1 T2 ON T0.DocEntry=T2.DocEntry
INNER JOIN OITM T3 ON T2.ItemCode=T3.ItemCode
INNER JOIN OITB T4 ON T3.ItmsGrpCod=T4.ItmsGrpCod
INNER JOIN OMRC T5 ON T5.FirmCode=T3.FirmCode
WHERE (T0.DocDate>= @FechaInicial or ISNULL( @FechaInicial, '2017-01-01')= '2017-01-01') AND (T0.DocDate<=@FechaFinal or isnull(@FechaFinal, (SELECT FORMAT(GETDATE(), 'yyyy/MM/dd')))=(SELECT FORMAT(GETDATE(), 'yyyy/MM/dd'))) AND T0.CardName='[%2]' AND T2.ItemCode='[%3]'
UNION ALL
SELECT T1.SlpCode 'Código Vendedor', T1.SlpName 'Nombre Vendedor', T0.CardCode 'Código Cliente', T0.CardName 'Nombre del Cliente',
CASE T0.ObjType
WHEN 14 THEN 'NC'
END 'Tipo Documento',
T0.DocNum 'Folio',
CASE T2.BaseType
WHEN 13 THEN 'F ' + T2.BaseRef
WHEN 14 THEN 'NC ' + T2.BaseRef
END 'Documento al que aplica',
FORMAT(T0.DocDate, 'yyyy-MM-dd') 'Fecha Factura', T2.ItemCode 'Código Artículo', T2.Dscription 'Descripción del Artículo',
T4.ItmsGrpNam 'Grupo del artículo', T5.FirmName 'Nombre del fabricante',
CASE T2.BaseType
WHEN 14 THEN T2.Quantity
ELSE '-' + CONVERT (VARCHAR(20), T2.Quantity)
END 'Cantidad',
CASE T2.BaseType
WHEN 14 THEN T2.LineTotal
ELSE '-' + CONVERT(VARCHAR(20), T2.LineTotal)
END 'Total Partida',
'-' + CONVERT(VARCHAR(20), (T2.StockPrice * T2.Quantity)) 'Costo por partida'
FROM ORIN T0
INNER JOIN OSLP T1 ON T0.SlpCode=T1.SlpCode
INNER JOIN RIN1 T2 ON T0.DocEntry=T2.DocEntry
INNER JOIN OITM T3 ON T2.ItemCode=T3.ItemCode
INNER JOIN OITB T4 ON T3.ItmsGrpCod=T4.ItmsGrpCod
INNER JOIN OMRC T5 ON T5.FirmCode=T3.FirmCode
WHERE (T0.DocDate>= @FechaInicial or ISNULL( @FechaInicial, '2017-01-01')= '2017-01-01') AND (T0.DocDate<=@FechaFinal or isnull(@FechaFinal, (SELECT FORMAT(GETDATE(), 'yyyy/MM/dd')))=(SELECT FORMAT(GETDATE(), 'yyyy/MM/dd'))) AND T0.CardName='[%2]' AND T2.ItemCode='[%3]'
Gracias por su ayuda y atención.
Saludos