Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buen día.
Estimados, espero estén muy bien, acudo a ustedes ya que no he podido conseguir el resultado que busco. Deseo obtener la suma de las cantidades de unidades de las Guías (Cant_Guia) de la menor fecha de despacho de una nota de venta (NoNota), actualmente estoy usando la siguiente fórmula; Sum({<Fecha_Despacho={'$(=Min(Fecha_Despacho))'}>}Cant_Guia), pero de esta manera obtengo la menor fecha del todo el grupo de datos (03-01-2018).
Agrego un pequeño grupo de datos.
NoNota | Cant_NV | NoGuia | Cant_Guia | SKU | Fecha_Despacho |
222113 | 1 | 361948 | 1 | ST7004 | 03-01-2018 |
222115 | 6 | 362278 | 6 | NF0000 | 04-01-2018 |
222115 | 1 | 362278 | 1 | GM0000 | 04-01-2018 |
222115 | 1 | 362278 | 1 | GM0000 | 04-01-2018 |
222357 | 7 | 362276 | 7 | ST7004 | 04-01-2018 |
222598 | 9 | 362583 | 9 | GM0000 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PI7001 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PB3001 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PB4001 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PB5001 | 03-01-2018 |
222598 | 5 | 362583 | 5 | TF4011 | 03-01-2018 |
222598 | 5 | 362583 | 5 | TF5007 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PB1201 | 03-01-2018 |
222598 | 5 | 362583 | 5 | PB3001 | 03-01-2018 |
222598 | 2 | 362583 | 2 | PI7051 | 03-01-2018 |
222598 | 2 | 362583 | 2 | PB9001 | 03-01-2018 |
222598 | 2 | 362583 | 2 | SA5001 | 03-01-2018 |
222598 | 1 | 362583 | 1 | GM0000 | 03-01-2018 |
222598 | 1 | 362583 | 1 | PB5001 | 03-01-2018 |
222598 | 7 | 362583 | 7 | PI7102 | 03-01-2018 |
222598 | 7 | 362583 | 7 | ST5100 | 03-01-2018 |
222647 | 0 | 362976 | 68 | PI7101 | 11-01-2018 |
222647 | 196 | 362976 | 196 | PB4003 | 11-01-2018 |
222647 | 196 | 362976 | 196 | PB2001 | 11-01-2018 |
222647 | 196 | 364967 | 128 | PI7101 | 31-01-2018 |
222991 | 3 | 362726 | 3 | DN5003 | 09-01-2018 |
222991 | 3 | 362726 | 3 | NS5703 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PI8101 | 09-01-2018 |
222991 | 3 | 362726 | 3 | AC6000 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PB3001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PB4001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PB5001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PI1001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PI2001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PI9001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | SA6001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | SA1001 | 09-01-2018 |
222991 | 3 | 362726 | 3 | SA1901 | 09-01-2018 |
222991 | 3 | 362726 | 3 | PB2001 | 09-01-2018 |
223085 | 2 | 362727 | 2 | PI1001 | 09-01-2018 |
223299 | 7 | 363207 | 7 | PI7102 | 12-01-2018 |
223302 | 5 | 363074 | 5 | OR5303 | 11-01-2018 |
223424 | 46 | 363807 | 46 | NS5603 | 19-01-2018 |
223569 | 8 | 363571 | 8 | ST7004 | 30-01-2018 |
223701 | 1 | 363492 | 1 | KP5603 | 17-01-2018 |
223736 | 2 | 363683 | 2 | ST7004 | 22-01-2018 |
223893 | 10 | 363808 | 10 | ST7210 | 19-01-2018 |
224048 | 4 | 364204 | 4 | ST7004 | 24-01-2018 |
224357 | 10 | 364442 | 10 | PB4001 | 25-01-2018 |
224357 | 10 | 364442 | 10 | PB5001 | 25-01-2018 |
224688 | 5 | 364590 | 5 | WL7004 | 26-01-2018 |
224688 | 5 | 364590 | 5 | TF4011 | 26-01-2018 |
224689 | 1 | 364589 | 1 | WL7004 | 26-01-2018 |
224689 | 1 | 364589 | 1 | TF4011 | 26-01-2018 |
224692 | 6 | 364714 | 6 | PB2001 | 30-01-2018 |
225141 | 1 | 364856 | 1 | PB2501 | 30-01-2018 |
225251 | 6 | 365115 | 6 | PI7101 | 31-01-2018 |
225251 | 6 | 365115 | 6 | PI7102 | 31-01-2018 |
225251 | 6 | 365115 | 6 | PB4003 | 31-01-2018 |
225251 | 6 | 365115 | 6 | PB2001 | 31-01-2018 |
225251 | 5 | 365115 | 5 | PI7001 | 31-01-2018 |
225251 | 5 | 365115 | 5 | PB4001 | 31-01-2018 |
225251 | 5 | 365115 | 5 | PB5001 | 31-01-2018 |
225251 | 5 | 365115 | 5 | TF4011 | 31-01-2018 |
225251 | 5 | 365115 | 5 | PB2001 | 31-01-2018 |
225251 | 5 | 365115 | 5 | PB4101 | 31-01-2018 |
225251 | 4 | 365115 | 3 | PB8101 | 31-01-2018 |
225251 | 4 | 365115 | 4 | PB9001 | 31-01-2018 |
225251 | 4 | 365115 | 4 | PB7000 | 31-01-2018 |
225251 | 4 | 365115 | 4 | PB1401 | 31-01-2018 |
225251 | 4 | 365115 | 4 | PB1901 | 31-01-2018 |
225251 | 1 | 365115 | 1 | PI7001 | 31-01-2018 |
225251 | 1 | 365115 | 1 | ST4700 | 31-01-2018 |
225251 | 1 | 365115 | 1 | PB5001 | 31-01-2018 |
225251 | 1 | 365115 | 1 | TF4011 | 31-01-2018 |
225251 | 1 | 365115 | 1 | SA2101 | 31-01-2018 |
225251 | 1 | 0 | 21PB6001007 | ||
225254 | 2 | 365081 | 2 | 20DN5303400 | 31-01-2018 |
225254 | 2 | 365081 | 2 | 60PB2001003 | 31-01-2018 |
225254 | 12 | 365081 | 12 | 20PB2201005 | 31-01-2018 |
225254 | 12 | 365081 | 12 | 21PB6001009 | 31-01-2018 |
225254 | 1 | 365081 | 1 | 20GR5003400 | 31-01-2018 |
225254 | 1 | 365081 | 1 | 21GM0000302 | 31-01-2018 |
225254 | 15 | 365081 | 15 | 21PB5001100 | 31-01-2018 |
225254 | 14 | 365081 | 14 | 21PB4001000 | 31-01-2018 |
Agradezco de antemano su colaboración.
Hola Luis,
Yo estas cosas las suelo solucionar añadiendo un campo "flag" a la tabla (en mi ejemplo TABLA_HECHOS) que contiene los campos 'NoNota', 'Cant_Guia' y 'Fecha_Despacho' (entre otros) para "señalar" aquellos registros que me convengan; en tu caso los de la fecha mínima para cada valor distinto de 'NoNota'.
En tu caso sería algo así como:
LEFT JOIN (TABLA_HECHOS)
LOAD NoNota AS NoNota,
1 AS Flag_Fecha_Minima_NoNota,
Min(Fecha_Despacho) AS Fecha_Despacho
RESIDENT TABLA_HECHOS
GROUP BY NoNota,
1;
De esta forma voy a añadir el campo 'Flag_Fecha_Minima_NoNota' a la tabla TABLA_HECHOS con el valor 1 para aquellos registros que se correspondan con la fecha mínima de cada NoNota (campo por el que agrupo) y luego en la expresión es tan sencillo como:
Sum({<Flag_Fecha_Minima_NoNota={1}>} Cant_Guia)
Espero haberme explicado bien y que te sirva de ayuda...
Saludos,
H
Hola Luis,
Yo estas cosas las suelo solucionar añadiendo un campo "flag" a la tabla (en mi ejemplo TABLA_HECHOS) que contiene los campos 'NoNota', 'Cant_Guia' y 'Fecha_Despacho' (entre otros) para "señalar" aquellos registros que me convengan; en tu caso los de la fecha mínima para cada valor distinto de 'NoNota'.
En tu caso sería algo así como:
LEFT JOIN (TABLA_HECHOS)
LOAD NoNota AS NoNota,
1 AS Flag_Fecha_Minima_NoNota,
Min(Fecha_Despacho) AS Fecha_Despacho
RESIDENT TABLA_HECHOS
GROUP BY NoNota,
1;
De esta forma voy a añadir el campo 'Flag_Fecha_Minima_NoNota' a la tabla TABLA_HECHOS con el valor 1 para aquellos registros que se correspondan con la fecha mínima de cada NoNota (campo por el que agrupo) y luego en la expresión es tan sencillo como:
Sum({<Flag_Fecha_Minima_NoNota={1}>} Cant_Guia)
Espero haberme explicado bien y que te sirva de ayuda...
Saludos,
H
Excelente, Muchas gracias Héctor, estaba resolviendo con Aggr, pero me diste la idea para solucionar este tipo de inconveniente, nuevamente muchas gracias.
De nada Luis... Hacer LEFT JOINs (yo lo llamo empotrar) en mi caso es algo muy común y que me saca de muchos apuros similares a este que tenías tú... Creo que no pasa un día sin que "empotre"... Saludos!
Buen día Héctor. te escribo porque me está pasando algo similar, intente solventarlo con el left join pero no lo consigo.
El punto es que debo calcular el servicio primer despacho, el resultado es binario, si o no, 0 o 1 etc..., los parámetros para obtenerlo es lo que me complica, ya que debo revisar si la cantidad pedida (Cant_NV) en la nota de venta (NoNota) se hizo en un solo despacho sin importar la cantidad de Guias (NoGuia), siempre y cuando la fecha de despacho (Fecha_Despacho) sea la misma.
En la siguiente data se dan todos los posibles casos.
NoNota | Sku | Cant_NV | NoGuia | Cant_Guia | Fecha_Despacho | Observaciones |
221284 | AZ10030 | 10 | 128145 | 10 | 02-01-2018 | Ningún problema, una sola guía y una sola fecha de despacho; 1 |
VE50034 | 21 | 128145 | 21 | 02-01-2018 | ||
VE56034 | 9 | 128145 | 9 | 02-01-2018 | ||
221408 | CX16111 | 6 | 361813 | 6 | Sin fecha de despacho; 0 | |
221703 | CX01112 | 90 | 362586 | 90 | 09-01-2018 | Se complica identificarla 2 No de Guías, una sola fecha de espacho, pero no se logró despachar todos los Sku; 0 |
CX15111 | 70 | 362587 | 70 | 09-01-2018 | ||
CX30171 | 100 | 0 | ||||
MZ10112 | 90 | 362586 | 90 | 09-01-2018 | ||
222272 | CI50030 | 10 | 362230 | 10 | 04-01-2018 | Se complica identificarla 2 Guías y una misma fecha de despacho; 1 |
CX10071 | 20 | 362230 | 20 | 04-01-2018 | ||
TF50071 | 10 | 362229 | 10 | 04-01-2018 |
De antemano muchas gracias.
Igualmente seguiré buscando la solución.
Hola Luis,
A ver si te he entendido y con esto te sirve...
Pasos:
En una tabla auxiliar cargas: NoNota, un conteo de sus fechas distintas en un campo y un conteo de sus fechas distintas informadas en otro campo. Algo así como:
TMP_01:
LOAD NoNota AS [TMP_01 NoNota],
Count(DISTINCT Fecha_Despacho) AS [TMP_01 Fechas Dist],
Count(DISTINCT If(Len(Fecha_Despacho) > 0, Fecha_Despacho)) AS [TMP_01 Fechas Dist Inf]
RESIDENT
GROUP BY NoNota;
Luego, tendrías que quedarte con aquellas NoNota que tengan solo una fecha distinta y que además esté informada. Entonces haces un LEFT JOIN contra la tabla original con solo aquellas NoNota que lo cumplan y les pones un flag a 1. Algo así como:
LEFT JOIN (TABLA_HECHOS)
LOAD [TMP_01 NoNota] AS NoNota,
1 AS Flag
RESIDENT TMP_01
WHERE [TMP_01 Fechas Dist] = 1 AND // Solo las NoNota con 1 fecha distinta y
[TMP_01 Fechas Dist Inf] = 1; // que la fecha no sea nula
Espero haberte entendido bien y que te sirva...
Saludos,
H
Hola Hector, gracias por tu respuesta, el único cambio que hice fue el siguiete.
Count(DISTINCT If(IsNull(Fecha_Despacho),0,1)) AS [TMP_01 Fechas Dist Inf] // Le quité el Len y coloque el IsNull, de esta forma me funcionó correctamente.
De verdad que no usaba lo que tu llamas empotrar, voy a tener que incorporarlo ya que facilita muchas cosas y mantiene en buen funcionamiento el QV.
Muchas Gracias.
Me alegro Luis! A empotrar!!!
Así es!