有没有办法在不使用临时表的情况下做我正在做的事情?
我需要根据查询分组返回计数<> 1的行数。我尝试用cte做这个,但我相信问题是cte末尾的第一个语句必须是一个select语句
IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp
select * into #temp
from
(
select
count(*) as cnt
,aColumnToGroupBy
from
TableA
where
aDifferentColumn=1
group by
aColumnToGroupBy
)data
DECLARE @DUB INT
SET @DUB = (select COUNT(*) from #temp where cnt<>1)
PRINT @DUB
答案 0 :(得分:1)
您可以使用HAVING
子句:
DECLARE @DUB INT
SET @DUB = (SELECT COUNT(*)
FROM (
SELECT aColumnToGroupBy, COUNT(*)
FROM TableA
WHERE aDifferentColumn = 1
GROUP BY aColumnToGroupBy
HAVING COUNT(*) <> 1) AS t)
@DUB
变量将设置为等于人口与aColumnToGroupBy
不同的1
组的数量。