Exceptuar registros de consulta

sql
Etiquetas: #<Tag:0x00007f43547a0708>

#1

Buen día expertos.

Tengo el siguiente query que me muestra todos los artículos facturados en los últimos dos días.

SELECT DISTINCT T0.ItemCode FROM INV1 T0

WHERE T0.ItemCode IN (SELECT DISTINCT T0.ItemCode WHERE T0.DocDate >= dateadd(DAY,-2,getdate()))

Ahora quiero hacer una consulta que me muestre todos los artículos que se han facturado excepto los que esten dentro de los resultados de la consulta anterior.

Intente con el NOT IN pero me muestra todos los artículos. ¿Tendrán alguna idea de cómo lo puedo hacer?

Saludos.


#2

y si cambias el >= por <= o simplemente <?


#3

Hola @Daniel_Torrez.
Igual me muestra todos los articulos, ya que como estoy haciendo la busqueda en el detalle de las facturas (INV1) puede haber otras facturas anteriores con esos mismos artículos.


#4

Hola Vik
La siguiente consulta muestra los articulos que no han tenido ventas

SELECT T0."ItemCode", T0."ItemName" 
FROM OITM T0  
LEFT JOIN INV1 T1 ON T0."ItemCode" = T1."ItemCode" 
LEFT JOIN OINV T2 ON T1."DocEntry" = T2."DocEntry" 
WHERE T0."SellItem" ='Y' AND T1."Quantity" IS NULL 
GROUP BY T0."ItemCode", T0."ItemName"

Saludos,
Andres Ramirez Jaramillo :colombia:


#5

Hola @Vik_B1

Buenas tardes, concuerdo con @andresramirez, lo que si sacaría el T0.“SellItem” =‘Y’ por que puede ser que les hayas sacado el check de ventas durante estos dos días de consulta y en este caso no consideraría los productos.

Lo otro en inventario, tiene un informe que se llama Artículos inactivos, por lo que veo hace lo que su consulta requiere y con varias opciones.

Saludos :raised_hand_with_fingers_splayed:t5:


#6

Si no pones este parámetro te va mostrar todas las materias primas, si es una empresa de manufactura podrían ser cientos o miles de códigos


#7

creo que se fueron lejos @andresramirez y @oscarezh el menciona que tiene un query que le muestra los items facturados los ultimos 2 dias y ahora quiere unos que le muestre los que esten facturados pero no de los ultimos 2 dias, bueno al menos eso es lo que yo entendi…


#8

Simplemente es agregar esto en el where mi consulta.

T0.DocDate >= dateadd(DAY,-2,getdate())

#9

Hola @andresramirez y @oscarezh.

Gracias por sus comentarios, les comparto el requerimiento.
Movimiento nulo de inventario: Mayor a 6 meses que no se factura.
Lento movimiento: Mayor a 3 meses menor a 6.
Movimiento moderado: Menor a 3 meses y mayor a un mes.
El primer query que mostré es para ver que efectivamente la consulta que hacia iba a excluir los registros que estaban dentro del subquery.
@andresramirez agregue el where pero no me muestra resultados, me basare en tu consulta para ver si consigo adaptarla. Por cierto el LEFT JOIN hacia OINV tal vez pueda omitirse.

Saludos.


#10

Hola
Pienso que deberias excluir las facturas canceladas y de cancelación.
Revisa lo siguiente, debes ajustar la sintaxis, yo trabajo con hana


SELECT T0."ItemCode", T0."ItemName" 
FROM OITM T0  
LEFT JOIN 
(
	SELECT T1."ItemCode" FROM OINV T0  
	INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry" 
	WHERE T0."CANCELED" ='N' AND  DAYS_BETWEEN(T0."DocDate", CURRENT_DATE) <= 2 
	GROUP BY T1."ItemCode"
) T11
ON T11."ItemCode" = T0."ItemCode"
WHERE T0."SellItem" ='Y' AND T11."ItemCode" IS NULL 
GROUP BY T0."ItemCode", T0."ItemName"

#11

Gracias @andresramirez.

Voy a adaptar la consulta y les informo si consigo algo.

Saludos.


#12

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