带有计数错误的sql子查询

时间:2014-04-10 08:42:42

标签: sql sql-server count subquery

我有以下查询

select   Obj.regcode,count(*) 
FROM     dbo.Objecten Obj          
INNER JOIN dbo.Dossiers Dos ON obj.objectnr=Dos.objectnr  
WHERE Dos.plan_gereed between '2014-01-01' and '2014-02-01'  
group by obj.regcode having count(*) > 1

工作正常,它会累加并只显示具有多个注册码的那些。

现在我想再次拆分它们,所以我可以查看哪些dossiernr与注册码相结合。 (我需要先将它们分组才能确定在定义的时间段内多次使用哪些注册码)

所以我认为我的查询会是这样的:

SELECT   obj.regcode, Dos.dossiernr  
FROM     dbo.objecten obj, 
         dbo.Dossiers Dos  
WHERE    obj.regcode IN ( select   Obj.regcode,count(*) 
                          FROM     dbo.Objecten Obj          
                           INNER JOIN  dbo.Dossiers Dos ON obj.objectnr=Dos.objectnr  
                          WHERE Dos.plan_gereed between '2014-01-01' and '2014-02-01'  
                          group by obj.regcode 
                          having count(*) > 1 )  
AND      obj.objectnr=Dos.objectnr

但是这个给出了以下错误:

  

当选择列表中只能指定一个表达式时   子查询不是用EXISTS引入的。

任何人都可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

只需从IN选择检查中删除count(*)

SELECT obj.regcode, Dos.dossiernr FROM dbo.objecten obj, dbo.Dossiers Dos WHERE obj.regcode IN ( select Obj.regcode FROM dbo.Objecten Obj INNER JOIN dbo.Dossiers Dos ON obj.objectnr=Dos.objectnr WHERE
Dos.plan_gereed between '2014-01-01' and '2014-02-01' group by obj.regcode having count(*) > 1 ) AND obj.objectnr=Dos.objectnr