我想从后续查询中获取行数:
select c1,count(*) from table
group by c1 having count(*) > 1;
所以我在SQL server中编写sql语句,如下所示:
select count(*) from (
select c1, count(*) from table
group by c1 having count(*) > 1);
但是当我运行这个脚本时,我总是得到一个语法错误,这意味着在最后一个括号附近有语法错误。但是这个sql语句在Oracle中运行良好。
任何人都可以告诉我应该如何正确地在SQL服务器中编写它?
答案 0 :(得分:0)
SQL Server
需要alias
个子选择名称。将缺少的alias
名称添加到子选择以修复错误。
SELECT Count(*)
FROM (SELECT c1,
Count(*) cnt
FROM table
GROUP BY c1
HAVING Count(*) > 1) a; --here
但是有一个更简单的版本
SELECT TOP 1 Count(*)OVER() -- Distinct Count(*)OVER()
FROM table
GROUP BY c1
HAVING Count(*) > 1
答案 1 :(得分:0)
您可以使用:with
创建临时结果集,然后对其运行另一个查询:
with mytable
as
(select c1, count(*) as cnt from table
group by c1 having count(*) > 1)
select count(*)
from mytable