其中一列的计数

时间:2016-05-18 00:31:03

标签: sql sql-server

我们说我的数据集看起来像是:

col1  col2  col3
a     2     20
a     3     12
a     4     34
b     2     44
c     3     23
c     5     13

...

我想要的是col1的数量。

输出:

col1  col2  col3  count
a     2     20    3
a     3     12    3
a     4     34    3
b     2     44    1
c     3     23    2
c     5     13    2

.......

我知道我可以做到:

with cte as (
select col1, count(*) count
from tab1)
select a.col1,a.col2,a.col3,cte.count
from tab1
join cte on a.col1=cte.col1

但是如果没有交叉申请或cte,还有其他任何我能做到的吗?

另外,假设col1中有超过3个字母,所以我也不能使用sum函数:

SUM(CASE WHEN ItemID = 'a' THEN 1 ELSE 0 END) AS count_a

1 个答案:

答案 0 :(得分:2)

如果您使用的是SQL Server 2008+,则可以使用COUNT() OVER()

SELECT *,
    COUNT(*) OVER(PARTITION BY col1)
FROM tab1

ONLINE DEMO