consulta con filtrado de datos
Publicado por Juanma (1 intervención) el 07/12/2011 18:58:35
Hola,
Tengo un problema para realizar una consulta de la que quiero extraer todos los código de productos cuyo peso no sea de 0.
El problema es que el peso viene definido en un nuevo campo calculado de la consulta al cual no puedo hacer referencia (ya sea por falta de conocimientos o por que realmente no se puede).
El tema es que no consigo que salga correctamente.
Como curiosidad, si ejecuto la consulta sin que los kilos de los productos sean 0, no muestra resultado (cuando tendría que hacer lo contrario). Y si algún producto tiene 0 kg, entonces es cuando muestra todo el listado de productos.
Os dejo el script
Un saludo y gracias!
Tengo un problema para realizar una consulta de la que quiero extraer todos los código de productos cuyo peso no sea de 0.
El problema es que el peso viene definido en un nuevo campo calculado de la consulta al cual no puedo hacer referencia (ya sea por falta de conocimientos o por que realmente no se puede).
El tema es que no consigo que salga correctamente.
Como curiosidad, si ejecuto la consulta sin que los kilos de los productos sean 0, no muestra resultado (cuando tendría que hacer lo contrario). Y si algún producto tiene 0 kg, entonces es cuando muestra todo el listado de productos.
Os dejo el script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
SELECT
le.id_lote_entrada AS ID,
le.cod_lote_entrada AS CODIGO,
le.fecha_caducidad,
CASE
WHEN sum(les.kg) is null AND sum(lt.peso_neto) is null
THEN sum(le.peso_neto)
WHEN sum(lt.peso_neto) is null
THEN (sum(le.peso_neto) - sum(les.kg))
WHEN sum(les.kg) is null
THEN (sum(le.peso_neto) - sum(lt.peso_neto))
ELSE (sum(le.peso_neto) - sum(les.kg) - sum(lt.peso_neto))
END AS PESO
FROM lotes_entrada AS le LEFT JOIN lotes_transformado AS lt
ON le.id_lote_entrada = lt.id_lote_entrada
LEFT JOIN lotes_ent_salida AS les
ON
le.id_lote_entrada = les.id_lote_entrada
WHERE le.id_palet_entrada = 220
AND le.id_lote_entrada not in
(
SELECT le.id_lote_entrada
FROM lotes_entrada AS le, lotes_transformado AS lt
WHERE le.id_lote_entrada = lt.id_lote_entrada
AND lt.peso_neto = le.peso_neto
)
AND le.id_lote_entrada not in
(
SELECT le.id_lote_entrada
FROM lotes_entrada AS le, lotes_ent_salida AS les
WHERE le.id_lote_entrada = les.id_lote_entrada
AND les.kg = le.peso_neto
)
AND le.id_lote_entrada not in
(
SELECT
CASE
WHEN (sum(le.peso_neto) - sum(lt.peso_neto)) - sum(les.kg) = 0
THEN le.id_lote_entrada
END AS id_lote_entrada
FROM lotes_entrada AS le, lotes_transformado AS lt, lotes_ent_salida AS les
WHERE le.id_lote_entrada = lt.id_lote_entrada
AND le.id_lote_entrada = les.id_lote_entrada
GROUP BY le.id_lote_entrada
)
GROUP BY le.cod_lote_entrada, le.fecha_caducidad, le.id_lote_entrada
ORDER BY le.fecha_caducidad ASC, le.cod_lote_entrada;
Un saludo y gracias!
Valora esta pregunta
0