簡體   English   中英

SQL Server計數

[英]SQL Server Counting

我有以下查詢:

select col1, sum( col2 ), count( col3 )
from table1
group by col1
order by col1

返回這樣的東西

col1
dept1
dept2
dept3

col2
10
20
30

col3
2
3
4

如果沒有存儲過程,是否有可能使合計列低於原始查詢生成的結果?

col1
dept1
dept2
dept3
total

col2
10
20
30
60

col3
2
3
4
9

使用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')

結果:

(No column name)    (No column name)    (No column name)
dept1               10                  2
dept2               20                  3
dept3               30                  4
total               60                  9

看一下GROUP BY子句上的關鍵字WITH ROLLUP

是的:

select col1, sum(col2), count(col3)
from table1
group by col1
union all
select 'totals', sum(col2), count(1) from table1
order by col1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM