SQL Server计数

osh*_*nen 2 sql t-sql sql-server sql-server-2005

我有以下查询:

select col1, sum( col2 ), count( col3 )
from table1
group by col1
order by col1
Run Code Online (Sandbox Code Playgroud)

返回这样的东西

col1
dept1
dept2
dept3

col2
10
20
30

col3
2
3
4
Run Code Online (Sandbox Code Playgroud)

如果没有存储过程,是否可以在原始查询生成的结果下方获得总列数?

col1
dept1
dept2
dept3
total

col2
10
20
30
60

col3
2
3
4
9
Run Code Online (Sandbox Code Playgroud)

Dam*_*ver 5

使用ROLLUP:

;with Table1 as (
    select 'dept1' as col1, 5 as col2,1 as col3
    union all
    select 'dept1', 5 as col2, 1 as col3
    union all
    select 'dept2',10,1
    union all
    select 'dept2',5,1
    union all
    select 'dept2',5,1
    union all
    select 'dept3',10,1
    union all
    select 'dept3',5,1
    union all
    select 'dept3',5,1
    union all
    select 'dept3',10,1
)
select COALESCE(col1,'total'), sum( col2 ), count( col3 )
from table1
group by col1
with rollup
order by COALESCE(col1,'ZZZZZ')
Run Code Online (Sandbox Code Playgroud)

结果:

(No column name)    (No column name)    (No column name)
dept1               10                  2
dept2               20                  3
dept3               30                  4
total               60                  9
Run Code Online (Sandbox Code Playgroud)