Wybór wiersza z najmniejszą wartością

0

Witam,

chciałbym wyświetlić wiersz z najmniejszą wartością BBD, lecz napotykam problem, w którym pokazuje mi minimalną wartość w kolumnie, którą wybieram, lecz wartości z innych kolumn nie są z tego wiersza.

Mianowicie:

WITH a AS(
SELECT sbk_ml_id, sbk_ml_label AS lokacja
FROM new_sbk_magazines_locations)

SELECT sbk_mlp_exp_date AS BBD, lokacja, sbk_ml_label, sbk_p_ean, sbk_mlp_qty
FROM
new_sbk_magazines_locations_products
LEFT JOIN new_sbk_magazines_locations ON new_sbk_magazines_locations_products.sbk_ml_id=new_sbk_magazines_locations.sbk_ml_id
LEFT JOIN sbk_products ON sbk_products.sbk_p_id=new_sbk_magazines_locations_products.sbk_p_id
LEFT JOIN a ON a.sbk_ml_id=new_sbk_magazines_locations.sbk_ml_parent_id
WHERE lokacja LIKE ('R%')
AND sbk_p_ean IN ('8936020052540')

wyświetla:

nr BBD lokacja sbk_ml_label sbk_p_ean sbk_mlp_qty
1 2023-05-20 R-02-11-0 P-702-001 8936020052540 39
2 2023-04-10 R-05-30-2 P-709-621 8936020052540 1536
3 2023-04-10 R-05-33-2 P-709-625 8936020052540 1536
4 2023-04-10 R-06-23-1 P-709-633 8936020052540 1397
5 2023-04-10 R-06-09-0 P-709-635 8936020052540 643
6 2023-04-10 R-04-55-0 P-709-954 8936020052540 104
7 2023-04-10 R-06-37-0 P-710-972 8936020052540 16
8 2023-04-10 R-05-24-0 P-712-304 8936020052540 158

natomiast

WITH a AS(
SELECT sbk_ml_id, sbk_ml_label AS lokacja
FROM new_sbk_magazines_locations)

SELECT MIN(sbk_mlp_exp_date) AS BBD, lokacja, sbk_ml_label, sbk_p_ean, sbk_mlp_qty
FROM
new_sbk_magazines_locations_products
LEFT JOIN new_sbk_magazines_locations ON new_sbk_magazines_locations_products.sbk_ml_id=new_sbk_magazines_locations.sbk_ml_id
LEFT JOIN sbk_products ON sbk_products.sbk_p_id=new_sbk_magazines_locations_products.sbk_p_id
LEFT JOIN a ON a.sbk_ml_id=new_sbk_magazines_locations.sbk_ml_parent_id
WHERE lokacja LIKE ('R%')
AND sbk_p_ean IN ('8936020052540')

wyświetla

nr BBD lokacja sbk_ml_label sbk_p_ean sbk_mlp_qty
1 2023-04-10 R-02-11-0 P-702-001 8936020052540 39

Czyli faktycznie MIN dla BBD, lecz cała reszta jest z wiersza, który miał BBD "2023-05-20".

Czy ktoś się z tym spotkał?

3

Posortój po BBD i weź piewrwszy z góry.

0

No właśnie to nie jest takie proste.
Przykład zawęziłem do wyniku jednego produktu, lecz docelowe zapytanie bierze pod uwagę wszystkie produkty, które mają różne BBD i lokacje, i wyświetla mi najmniejsze BBD dla danego produktu, lecz niepoprawną lokację:

lokacja sbk_ml_label sbk_p_ean sbk_mlp_qty BBD
R-02-32-0 P-711-937 4038375024396 9 2022-10-18
R-02-11-0 P-702-001 8936020052540 39 2023-05-20
R-03-33-0 P-712-716 5900852041167 18 2022-05-19
R-06-51-3 P-713-416 5029053527598 188 2024-12-05
R-04-34-0 P-713-118 5411188119753 496 2022-10-03
R-05-03-0 P-711-431 5902078004803 646 2023-08-31
R-03-60-3 P-713-255 7613037076707 270 2023-10-31
R-06-15-0 P-713-572 5901958612688 2736 2022-12-17
R-02-56-1 P-712-872 5902488066095 304 2022-10-12
R-02-25-2 P-710-777 5903229001627 159 2024-06-14
R-05-36-2 P-713-187 818075009664 1251 2023-08-20
R-06-12-2 P-713-591 5411188081852 576 2022-09-05
R-01-45-3 P-709-924 5099514200209 553 2022-12-31
R-03-23-4 P-713-024 5900852046070 892 2022-05-21

0

Ok, to było proste rozwiązanie, lecz genialne. Zwracam honor.

Dziękuję i zamykam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1