Дублирование поля на основе столбца - PullRequest
1 голос
/ 28 марта 2020

У меня есть таблица SHIPMENT

SHIPMENT       CARTON_ID       ITEM
100             A123           10000243
101             A123           10253456
100             A200           11192423
100             A300           11174523

Идентификатор коробки повторяется для двух отправлений. Я хочу знать, какой идентификатор коробки повторяется для более чем одного отдельного идентификатора отгрузки, то есть A123 повторяется для 100 и 101

select carton, count (carton) from shipment
where
carton is not null
group by carton, shipment
having count (carton) > 1

что мне нужно изменить в запросе?

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Вы должны группировать только по картонной коробке и считать ее отдельные поставки:

SELECT   carton, COUNT(DISTINCT shipment)
FROM     shipment
GROUP BY carton
HAVING   COUNT(DISTINCT shipment) > 1
0 голосов
/ 28 марта 2020

Ваше текущее предложение group by создает одну строку для каждой партии и картонной упаковки По сути, вам просто нужно удалить shipment из предложения group by, чтобы вы получили одну группу на carton_id: затем вы можете проверить, сколько строк принадлежит группе, как вы изначально предполагали:

select carton_id, count(*)
from shipment
where carton_id is not null
having count(*) > 1

Если существует возможность дублирования (shipment, carton_id) кортежей, и вы не хотите считать их дважды, вы можете использовать count(distinct shipment) вместо count(*).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...