SQL Server - Ayuda novata

 
Vista:
sin imagen de perfil

Ayuda novata

Publicado por Esperanza (11 intervenciones) el 22/07/2013 17:42:26
Tengo un problema con un codigo de una vista de sql 2008, este codigo me muestra las ultimas ventas de articulos por lotes, el problema es que un articulo tiene varios lotes por lo que el codigo me muestras varias fechas de venta y yo solo necesito que me arroje la fecha mas reciente del articulo es decir que si tiene 5 lotes me muestre el de la fecha mas reciente, no se si me explico, adjunto el codigo por si pueden ayudarme se los agradecere.

SELECT TOP (100) PERCENT dbo.gbkmut.artcode, MAX(dbo.gbkmut.datum) AS LastMove, GETDATE() AS DateNow, DATEDIFF(DAY, MAX(dbo.gbkmut.datum), GETDATE())
AS DayLastMoveUntilNow, dbo.gbkmut.aantal, dbo.gbkmut.docnumber
FROM dbo.gbkmut WITH (NOLOCK) INNER JOIN
dbo.grtbk WITH (NOLOCK) ON dbo.grtbk.reknr = dbo.gbkmut.reknr LEFT OUTER JOIN
dbo.humres AS SM WITH (NOLOCK) ON SM.res_id = dbo.gbkmut.sysmodifier LEFT OUTER JOIN
dbo.humres AS SC WITH (NOLOCK) ON SC.res_id = dbo.gbkmut.syscreator LEFT OUTER JOIN
dbo.cicmpy WITH (NOLOCK) ON dbo.cicmpy.debnr = dbo.gbkmut.debnr AND dbo.cicmpy.debnr IS NOT NULL AND dbo.gbkmut.debnr IS NOT NULL LEFT OUTER JOIN
dbo.cicmpy AS c1 WITH (NOLOCK) ON c1.crdnr = dbo.gbkmut.crdnr AND c1.crdnr IS NOT NULL AND dbo.gbkmut.crdnr IS NOT NULL LEFT OUTER JOIN
dbo.humres WITH (NOLOCK) ON dbo.gbkmut.res_id = dbo.humres.res_id LEFT OUTER JOIN
dbo.cicmpy AS c3 WITH (NOLOCK) ON dbo.gbkmut.orderdebtor = c3.cmp_wwn AND dbo.gbkmut.orderdebtor IS NOT NULL AND c3.cmp_wwn IS NOT NULL
LEFT OUTER JOIN
dbo.magaz WITH (NOLOCK) ON dbo.magaz.magcode = dbo.gbkmut.warehouse AND dbo.magaz.magcode IS NOT NULL AND dbo.gbkmut.warehouse IS NOT NULL
LEFT OUTER JOIN
dbo.Items WITH (NOLOCK) ON dbo.Items.ItemCode = dbo.gbkmut.artcode AND dbo.Items.ItemCode IS NOT NULL AND dbo.gbkmut.artcode IS NOT NULL
LEFT OUTER JOIN
dbo.kstpl WITH (NOLOCK) ON dbo.gbkmut.kstplcode = dbo.kstpl.kstplcode AND dbo.gbkmut.kstplcode IS NOT NULL AND dbo.kstpl.kstplcode IS NOT NULL
LEFT OUTER JOIN
dbo.kstdr WITH (NOLOCK) ON dbo.gbkmut.kstdrcode = dbo.kstdr.kstdrcode AND dbo.gbkmut.kstdrcode IS NOT NULL AND dbo.kstdr.kstdrcode IS NOT NULL
WHERE (dbo.gbkmut.transtype IN ('N', 'C', 'P', 'F')) AND (dbo.gbkmut.transsubtype = 'B') AND (dbo.grtbk.bal_vw IN ('W')) AND (dbo.gbkmut.ReminderCount <= 15)
GROUP BY dbo.gbkmut.artcode, dbo.gbkmut.aantal, dbo.gbkmut.docnumber, dbo.grtbk.bal_vw
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda novata

Publicado por Esperanza (11 intervenciones) el 22/07/2013 18:03:37
claro, en este ejemplo el articulo 00BCWT tiene dos lotes, uno de ellos se vendio la ultima vez el 29 de enero y el otro el 22 de abril, necesito que solo me muestre el del 22 de abril y su cantidad que son 3

Artcode | LastMove | DateNow | DayLastMoveUntilNow | Aantal |

00CBWT | 2013-01-29 | 2013-07-22 | 174 | 4 |
00CBWT | 2013-04-22 | 2013-07-22 | 94 | 3 |
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias Islas Gonzalez
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda novata

Publicado por Isaias Islas Gonzalez (4558 intervenciones) el 22/07/2013 20:14:25
Entonces debes hacer un SELECT Artcode, MAX(LastMove) FROM <tutabla> GROUP BY Artcode

Y hacer un JOIN con este select, como si fuera una tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda novata

Publicado por Esperanza (11 intervenciones) el 22/07/2013 20:24:29
ya quedo, eres un genio, muchas gracias por tu ayuda y tu paciencia.


Saluditos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda novata

Publicado por Esperanza (11 intervenciones) el 23/07/2013 20:32:51
Hola Isaias, sabes que? me estoy dando cuenta al ordenar los datos por codigo de articulo que no me salio bien el codigo, algo tengo mal porque no me los esta agrupando, me puedes auxiliar pleaaaase? hize una vista nueva y la conecte con la anterior, el codigo que sigue es el que tengo en la nueva vista no se que tengo mal.

SELECT TOP (100) PERCENT artcode, aantal AS Quantity, docnumber, MAX(LastMove) AS LastMove, DayLastMoveUntilNow, DateNow
FROM dbo.Vw_LastMove
GROUP BY artcode, aantal, docnumber, LastMove, DayLastMoveUntilNow, DateNow
ORDER BY artcode
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias Islas Gonzalez
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda novata

Publicado por Isaias Islas Gonzalez (4558 intervenciones) el 23/07/2013 21:20:14
Sin tomar en cuenta todas tus tablas, mi propuesta era esta:

SELECT TOP (100) PERCENT dbo.gbkmut.artcode, dbo.gbkmut.datum AS LastMove, GETDATE() AS DateNow, DATEDIFF(DAY, MAX(dbo.gbkmut.datum), GETDATE())
AS DayLastMoveUntilNow, dbo.gbkmut.aantal, dbo.gbkmut.docnumber
FROM dbo.gbkmut WITH (NOLOCK) INNER JOIN
(SELECT Artcode, MAX(LastMove) AS LastMove FROM <tutabla> GROUP BY Artcode) AS X
ON dbo.gbkmut.artcode = X.Artcode AND X.LastMove = dbo.gbkmut.datum

Como te daras cuenta, estoy creando una "tabla" temporal con un alias "X"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar