SQL - filtrar información del mismo rango de fecha por diferente estatus en query

 
Vista:
Imágen de perfil de Antonio
Val: 30
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

filtrar información del mismo rango de fecha por diferente estatus en query

Publicado por Antonio (30 intervenciones) el 12/12/2022 20:01:28
Hola a todos

tengo un situación con un query, quiero filtrar la información por un rango de fechas pero diferente estatus, pero al momento de realizar la consulta me duplica la información.

el primer filtro me trae la información que tenga el estatus 2549 y el segundo el estatus 81, pero el query me trae la información duplicada.

este es el query

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
cast(floor(cast(A.Invoice_Date as float)) as datetime) as 'Fecha',
@Diario AS 'TIPO',
A.Invoice_No,
A.Amount AS 'Moneda Nacional',
A.Foreign_Currency_Amount AS 'Moneda Extranjera',
C.Account_No,
B.Supplier_Code
FROM Accounting_v_AP_Invoice A
INNER JOIN Common_v_Supplier B ON A.Supplier_No = B.Supplier_No
INNER JOIN Common_v_Supplier_Accounting B1 ON A.Supplier_No = B1.Supplier_No
INNER JOIN Accounting_v_Account C ON B1.AP_Credit_Account_Key  = C.Account_Key
WHERE CONVERT(DATE,A.Invoice_Date) BETWEEN @Fecha_Inicio_FAC AND @Fecha_Fin_FAC AND C.Account_No LIKE @Account_No AND A.AP_Invoice_Status_Key = 2549
OR (CONVERT(DATE,A.Invoice_Date) BETWEEN @Fecha_Inicio_FAC AND @Fecha_Fin_FAC AND A.AP_Invoice_Status_Key = 81)

resultado

1709624
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
Imágen de perfil de Kathyu

filtrar información del mismo rango de fecha por diferente estatus en query

Publicado por Kathyu (1 intervención) el 13/12/2022 13:40:07
Es difícil recrear una query sin toda la DB para probar, pero en su query veo algunas cosas que me dan dudas:

- Lo principal es porque utiliza un OR cuando lo que evalúa es casi idéntico??
- Porque en vez de evaluar cada Invoice_Status (A.AP_Invoice_Status_Key = 2549 y A.AP_Invoice_Status_Key = 81) no lo hace en una sola evaluación con IN así A.AP_Invoice_Status_Key IN (2549, 81) ??
- Ya probó con diferentes tipos de Join??
- Por ahí veo un Like, seguro que eso no le afecta al resultado??

Yo siempre lo he dicho acá en LWP, cuando algo es complejo lo mejor es "Hacerlo como Jack el destripador, por partes". Vaya haciendo su query con un solo tipo de datos y cuando tenga resultados concretos agregue los otros filtros, y ojo al orden de sus filtros porque eso le va a limitar o incluir mas o menos resultados que pueden ser buenos o malos.
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