Показать места, где остался только один предмет - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу отобразить все местоположения, в которых остался только один предмет. Пробовал с использованием функции SUM, но он по-прежнему дает мне несколько строк с одним и тем же местоположением, 3 статьи номер, которые имеют сумму 1

SELECT location, artnr, sum(qty) FROM location_stock GROUP BY location, artnr HAVING sum(qty) = 1

РЕЗУЛЬТАТ:

Location Art Nr Sum(Qty) 12345 5345 1 12345 5874 1 12345 4756 1

То, что мне нужно, это места с одним номером статьи и одним кол-во:

Location Art Nr Sum(Qty) 12345 5345 1

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Предполагая, что количество никогда не бывает отрицательным или равным нулю, тогда это должно работать:

SELECT location, max(artnr) as artnr, sum(qty)
FROM location_stock
GROUP BY location
HAVING SUM(qty) = 1;

Для более общего решения:

SELECT location, max(artnr) as artnr, sum(qty)
FROM location_stock
GROUP BY location
HAVING MIN(artnr) = MAX(artnr) AND
       SUM(qty) = 1;

Если вы на самом деле не заботитесь о количествено только один artnr, затем удалите условие на SUM(qty).

0 голосов
/ 24 апреля 2019

Вы можете использовать row_number() оконную функцию

   select * from ( SELECT location, artnr, sum(qty) as s,
    row_number() over(partition by location order by artnr asc) rn
    FROM location_stock
    GROUP BY location, artnr
    HAVING sum(qty) = 1
    ) a where a.rn=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...