SQL Не уникальные записи - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь написать запрос, который возвращает мне DateCode и ContainerName из двух соединенных таблиц, но дает только записи, где DateCode не уникален (имеет несколько записей). Мне кажется, что запрос SQL, который я написал, должен делать именно это, но я получаю эту ошибку:

Каждое выражение GROUP BY должно содержать хотя бы один столбец, который не является внешней ссылкой.

Возможно, я просто слишком зеленый, чтобы понять, почему это не работает, но вот мой запрос:

SELECT LA.DateCode, C.ContainerName 
FROM CamstarSch.A_LotAttributes LA INNER JOIN 
     CamstarSch.Container C 
     ON C.ContainerId = LA.ContainerId
WHERE LA.DateCode IN (SELECT LA.DateCode 
                      FROM CamstarSch.A_LotAttributes 
                      GROUP BY LA.DateCode, C.ContainerName 
                      HAVING COUNT(*) > 1
                    );

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Проблема с subquery, DateCode должна быть из запроса подзапроса:

WHERE LA.DateCode IN (SELECT AL.DateCode 
                      FROM CamstarSch.A_LotAttributes AS AL
                      GROUP BY AL.DateCode 
                      HAVING COUNT(*) > 1
                    );

Однако простое агрегирование также будет работать:

SELECT LA.DateCode, C.ContainerName 
FROM CamstarSch.A_LotAttributes LA INNER JOIN 
     CamstarSch.Container C 
     ON C.ContainerId = LA.ContainerId
GROUP BY LA.DateCode, C.ContainerName 
HAVING COUNT(*) > 1;
1 голос
/ 09 января 2020

Это довольно легко, вы были так близко!

SELECT LA.DateCode, C.ContainerName, COUNT(*)
FROM CamstarSch.A_LotAttributes LA
INNER JOIN CamstarSch.Container C ON C.ContainerId = LA.ContainerId
GROUP BY LA.DateCode, C.ContainerName 
HAVING COUNT(*)>1
...