我有这个问题:
select IDPersonne, NumeroClientAXA, COUNT(1) as 'NbrDoublons'
from PortefeuillePersonne
group by IDPersonne, NumeroClientAXA
having COUNT(1)>1
我想在这个子查询上加入3个表 我尝试过类似的东西:
select prs.NumeroSocietaire,
pp.NumeroClientAXA, pp.IDPortefeuille, pf.Code, pf.Intitule, count(1)
from PortefeuillePersonne pp
Join Portefeuille pf
ON pf.IDPortefeuille = pp.IDPortefeuille
Join Personne prs
ON prs.IDPersonne IN (select IDPersonne
from PortefeuillePersonne
group by IDPersonne
having COUNT(IDPersonne)>1)
它一直告诉我: 专栏' Personne.NumeroSocietaire'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
你能帮助我吗?答案 0 :(得分:0)
假设您希望记录中包含多条PortefeuillePersonne
条记录,则应将其更改为以下内容:
select prs.NumeroSocietaire, pp.NumeroClientAXA, pp.IDPortefeuille, pf.Code,
pf.Intitule, count(pp.IDPersonne)
from PortefeuillePersonne pp
Join Portefeuille pf
ON pf.IDPortefeuille = pp.IDPortefeuille
Join Personne prs
ON prs.IDPersonne = pp.IDPersonne
group by prs.NumeroSocietaire, pp.NumeroClientAXA, pp.IDPortefeuille, pf.Code,
pf.Intitule
having COUNT(pp.IDPersonne)>1
select
列表中的任何字段都必须聚合或包含在SQL Server中的group by
中。
答案 1 :(得分:0)
Select prs.NumeroSocietaire
, pp.NumeroClientAXA
, pp.IDPortefeuille
, pf.Code
, pf.Intitule
, count(1)
from PortefeuillePersonne pp
Inner Join ( select IDPersonne
from PortefeuillePersonne
group by IDPersonne
having COUNT(IDPersonne)>1
) p1 ON pp.IDPersonne = P1.IDPersonne
Inner Join Portefeuille pf ON pf.IDPortefeuille = pp.IDPortefeuille
Inner Join Personne prs ON prs.IDPersonne = pp.IDPersonne
GROUP BY prs.NumeroSocietaire
, pp.NumeroClientAXA
, pp.IDPortefeuille
, pf.Code
, pf.Intitule
答案 2 :(得分:0)
这不是有效的join
尝试;
ON prs.IDPersonne IN (select IDPersonne
from PortefeuillePersonne
group by IDPersonne
having COUNT(IDPersonne)>1)
您应该将子选择作为一个集合加入,因此完整的查询应该是这样的;
select prs.NumeroSocietaire, pp.NumeroClientAXA, pp.IDPortefeuille, pf.Code, pf.Intitule, count(1)
from PortefeuillePersonne pp
join Portefeuille pf ON pf.IDPortefeuille = pp.IDPortefeuille
join (select IDPersonne
from PortefeuillePersonne
group by IDPersonne
having COUNT(IDPersonne)>1) A ON A.IDPersonne = prs.IDPersonne
group by prs.NumeroSocietaire, pp.NumeroClientAXA, pp.IDPortefeuille, pf.Code, pf.Intitule