0

これは本当に簡単なはずです。SSMS 2008 を使用して、1 つの列だけの合計を取得しようとしています。問題は、現在この 1 つの列をグループ化し、HAVING ステートメントも使用していることです。レコードの合計数 > 1 の合計を取得するにはどうすればよいですか? これは現在の私の T-SQL ロジックです。

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

しかし、このデータは次のようになります。

consumer_count 
----------------
2
2
4
3
...
4

5 に答える 5

3

包んでください?

SELECT SUM(consumer_count)
FROM (
    select count(*) as consumer_count from #consumer_initiations
    group by consumer
    having count(1) > 1
) AS whatever
于 2011-09-27T20:28:59.607 に答える
1

ネストされたクエリの場合:

select sum(consumer_count)
FROM (

    select count(*) as consumer_count from #consumer_initiations
    group by consumer
    having count(1) > 1
) as child
于 2011-09-27T20:29:10.190 に答える
1
select sum(t.consumer_count)
    from (select count(*) as consumer_count 
              from #consumer_initiations
              group by consumer
              having count(1) > 1) t
于 2011-09-27T20:29:50.830 に答える
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
      )
于 2011-09-27T20:41:33.883 に答える
0

試す:

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

これにより、元のクエリが返すレコードの合計が得られます。これらのタイプのクエリは、ネストされたクエリと呼ばれます。

于 2011-09-27T20:31:26.893 に答える