Query Articulos vendidos a un Cliente

Tengo esta Query para ver que artículos me compra un cliente, funciona bien pero tengo que filtrar el nombre una vez me carga el listado, no se como añadir la manera de que me pida el nombre primero. Además quería añadir también que me pida en que fechas quiero que busque. No se si es posible.

SELECT OCRD.CardCode, OCRD.CardName, SUM(INV1.Price * INV1.Quantity) AS Total, OITB.ItmsGrpNam, OCRG.GroupName, OITM.ItemCode, OITM.ItemName
    
FROM  INV1 INNER JOIN OITM ON INV1.ItemCode = OITM.ItemCode INNER JOIN OITB ON OITB.ItmsGrpCod = OITM.ItmsGrpCod INNER JOIN OINV ON OINV.DocEntry = INV1.DocEntry INNER JOIN OCRD ON OINV.CardCode = OCRD.CardCode INNER JOIN OCRG ON OCRD.GroupCode = OCRG.GroupCode
    
GROUP BY OCRD.CardCode, OCRD.CardName, OITB.ItmsGrpNam, OCRG.GroupName, OITM.ItemCode, OITM.ItemName
1 me gusta

VALIDA si te funciona de esta forma:

SELECT OCRD.CardCode, OCRD.CardName, SUM(INV1.Price * INV1.Quantity) AS Total, OITB.ItmsGrpNam, OCRG.GroupName, OITM.ItemCode, OITM.ItemName
    
FROM  INV1 INNER JOIN OITM ON INV1.ItemCode = OITM.ItemCode INNER JOIN OITB ON OITB.ItmsGrpCod = OITM.ItmsGrpCod INNER JOIN OINV ON OINV.DocEntry = INV1.DocEntry INNER JOIN OCRD ON OINV.CardCode = OCRD.CardCode INNER JOIN OCRG ON OCRD.GroupCode = OCRG.GroupCode
WHERE OCRD.CardName ='[%0]' AND OINV.DocDate Between '[%1]' and '[%2]'
    
GROUP BY OCRD.CardCode, OCRD.CardName, OITB.ItmsGrpNam, OCRG.GroupName, OITM.ItemCode, OITM.ItemName
2 Me gusta

Con esa opción da un error. Adjunto la imagen.

Hola, Intenta cambiando esto y lo colocas de la siguiente forma:
OCRD.CardName LIKE ‘%%[%0]%%’

Continúa el mismo error. El Query de @octaviz si se ejecuta bien, sólo falta que le pida el nombre primero

¿Y porque no usas toda la información que da el sistema?
Análisis del volumen de negocios, arrastrar y vincular…
A veces queremos obtener lo que ya tenemos…

Y si además pasas por la sección de presentaciones…Premio!!!

hola estimados, después de leer y releer el problema y el comentario que agrega @ronselecto, creo a mi parecer que lo que pide es que solamente se cambie el primer campo, esto quiere decir que de la consulta de @juliancab , después del select poner primero OCRD.CardName y luego OCRD.Cardcode.

Saludos Cordiales.,

checa este son ventas - notas de credito

el resultado (linetotal) pega contra un analisis de ventas (informe nativo de SAP ) , quita columnas utilices

SELECT T0.[DocNum], T0.[CANCELED], T0.[DocStatus], T0.[DocDate], T0.[DocDueDate], T0.[CardCode], T0.[CardName], T0.[DocTotal], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price], T1.[Currency], T1.[LineTotal], T1.[TotalSumSy]‘TOTAL USD’, T1.[WhsCode] FROM OINV T0 INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry] WHERE T0.[CANCELED] =‘n’ and T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1] and T0.[Cardcode] like ‘%%[%2]%%’

UNION

SELECT T0.[DocNum], T0.[CANCELED], T0.[DocStatus], T0.[DocDate], T0.[DocDueDate], T0.[CardCode], T0.[CardName], (T0.[DocTotal]-1)‘OK’, T1.[ItemCode], T1.[Dscription], (T1.[Quantity]-1)‘OK1’, T1.[Price], T1.[Currency], (T1.[LineTotal]*-1)‘OK2’, T1.[TotalSumSy]‘TOTAL USD’, T1.[WhsCode] FROM ORIN T0 INNER JOIN RIN1 T1 ON T0.[DocEntry] = T1.[DocEntry] WHERE T0.[CANCELED] =‘n’ and T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1] and T0.[Cardcode] like ‘%%[%2]%%’

Muchas gracias a todos por la ayuda, al final lo conseguí de otra manera, este es mas complejo y da más información. Por si alguien lo quiere es así:

Declare @fromdate as datetime
Declare @Todate as datetime
Declare @Code as nvarchar(25)
set @fromdate = ( select min(Ta.[docDate]) from inv1 ta where Ta.[docDate] >= [%0])
set @Todate = ( select max(Tb.[docDate]) from inv1 tb where Tb.[docDate] <= [%1])
set @code = (select max(Tc.[cardName]) from OINV tC where Tc.[cardName] = [%2])


SELECT [Name] as Itemcode,[C] as Customername, [Jan]= sum([1]), [Feb]= sum([2]), [Mar]= sum([3]), [Apr]= sum([4]),  [May]= sum([5]), [June]= sum([6]), [July]= sum([7]), [Aug]= sum([8]), [Sept]= sum([9]), [Oct]= sum([10]), [Nov]= sum([11]), [Dec]= sum([12]), total = sum (isnull([1],0)+ isnull([2],0) + isnull([3],0) + isnull([4],0) +  isnull([5],0) + isnull([6],0) + isnull([7],0) + isnull([8],0) + isnull([9],0)+ isnull([10],0) + isnull([11],0) + isnull([12],0))

from


(SELECT T0.itemcode as Name, t2.cardname as C, t1.quantity
                 * t1.price [stock_value], month(T1.[docDate]) as month FROM OITM T0  INNER JOIN INV1 T1 ON T0.itemcode = T1.itemcode INNER JOIN OINV T2 ON T1.docentry = T2.docentry WHERE T1.[docDate] between @fromdate and @todate and  T2.[cardName]  = @code  GROUP BY T0.itemcode,T1.[docDate],t2.cardname,t1.quantity, t1.price ) S

Pivot
(sum([stock_value]) For  Month IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) P
group by [Name],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[C]

For Browse
2 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.