SQL从MS Access复制了查询

SQL从MS Access复制了查询,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,我试图在SQL中重新创建MS Access查询,下面是转换为在SQL中运行的Access查询 SELECT Column1 ,Column2 ,Column3 ,Count('x') AS CountX FROM [SchmaName].[SQLView] WHERE ("SomeWhereStatement") GROUP BY Column1, Column2, Column3 HAVING

我试图在SQL中重新创建MS Access查询,下面是转换为在SQL中运行的Access查询

    SELECT Column1
          ,Column2
          ,Column3
          ,Count('x') AS CountX
    FROM [SchmaName].[SQLView]
    WHERE ("SomeWhereStatement")
    GROUP BY Column1, Column2, Column3
    HAVING Count('x')>1;
我感到困惑的是

 ,Count('x') AS CountX


X不是来自已创建的SQLView,当我运行上面的命令时,它将返回一条记录,其中第1-3列为null,第CountX列为12896。我预计总共有4285条记录返回,我怀疑我没有返回的原因与此计数有关。关于此计数实际执行的操作有何建议?

当您在计数中传递任何常量参数,即“x”是常量参数时,它将返回记录总数:

因此,在查询中,它将根据GROUPBY子句定义的列返回记录


使用count'x'与使用count1或count*没有什么不同-它只是计算文本字符串,尽管这是一种非常奇怪的方式。您确定要分组的其他列有值吗?听起来它们都是空的,因此聚合为一个结果。样本数据和期望的结果会很有帮助;好的,谢谢,这解释了它在做什么,并为我指出了正确的方向
 HAVING Count('x')>1;
SELECT Column1, Column2, Column3, Count('x') AS CountX
FROM [SchmaName].[SQLView]
WHERE ("SomeWhereStatement")
GROUP BY Column1, Column2, Column3
HAVING Count('x') > 1;