простая сумма в T-sql - PullRequest
       49

простая сумма в T-sql

0 голосов
/ 28 сентября 2011

Это должно быть действительно просто.Я использую SSMS 2008, пытаясь получить сумму только один столбец.Проблема в том, что в данный момент я группирую этот столбец, а также использую оператор 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
...

Ответы [ 5 ]

3 голосов
/ 28 сентября 2011

Обернуть это?

SELECT SUM(consumer_count)
FROM (
    select count(*) as consumer_count from #consumer_initiations
    group by consumer
    having count(1) > 1
) AS whatever
1 голос
/ 28 сентября 2011
select sum(t.consumer_count)
    from (select count(*) as consumer_count 
              from #consumer_initiations
              group by consumer
              having count(1) > 1) t
1 голос
/ 28 сентября 2011

С вложенным запросом:

select sum(consumer_count)
FROM (

    select count(*) as consumer_count from #consumer_initiations
    group by consumer
    having count(1) > 1
) as child
0 голосов
/ 28 сентября 2011

Помимо переноса в другой запрос, вы можете использовать это:

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
      )
0 голосов
/ 28 сентября 2011

Попробуйте:

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

Это даст вам сумму записей, которые возвращает ваш исходный запрос.Эти типы запросов называются вложенными запросами.

...