2011-09-27 46 views
0

這應該很簡單。我正在使用SSMS 2008,試圖獲得只有一列的總和。問題是我目前在這一列上進行分組,並使用HAVING語句。我如何獲得總記錄數> 1的總和?這是我目前的T-SQL邏輯:T-sql中的簡單SUM

select count(*) as consumer_count from #consumer_initiations 
group by consumer 
having count(1) > 1 

但這個數據是這樣的:

consumer_count 
---------------- 
2 
2 
4 
3 
... 
+1

獲取的記錄數是不一樣越來越總和。 –

回答

3

總結呢?

SELECT SUM(consumer_count) 
FROM (
    select count(*) as consumer_count from #consumer_initiations 
    group by consumer 
    having count(1) > 1 
) AS whatever 
1

隨着嵌套查詢:

select sum(consumer_count) 
FROM (

    select count(*) as consumer_count from #consumer_initiations 
    group by consumer 
    having count(1) > 1 
) as child 
1
select sum(t.consumer_count) 
    from (select count(*) as consumer_count 
       from #consumer_initiations 
       group by consumer 
       having count(1) > 1) t 
0

嘗試:

select sum(t.consumer_count) from 
(
    select count(*) as consumer_count from #consumer_initiations 
    group by consumer 
    having count(1) > 1 
) t 

這會給你的紀錄,你原來的查詢返回的總和。這些類型的查詢稱爲嵌套查詢。

0

除了在另一個查詢包裹,你可以這樣做:

SELECT COUNT(*) AS consumer_count 
FROM #consumer_initiations AS a 
WHERE EXISTS 
     (SELECT * 
     FROM #consumer_initiations AS b 
     WHERE b.consumer = a.consumer 
      AND b.PK <> a.PK    -- the Primary Key of the table 
    )