SQL非唯一条目

问题描述 投票:0回答:2

我正在尝试编写一个查询,该查询从两个联接的表中返回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
                    );
sql sql-server group-by having
2个回答
2
投票

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
投票

这是一个非常容易的人,你是如此亲密!

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
© www.soinside.com 2019 - 2024. All rights reserved.