我们说我的数据集看起来像是:
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
答案 0 :(得分:2)
如果您使用的是SQL Server 2008+,则可以使用COUNT() OVER()
:
SELECT *,
COUNT(*) OVER(PARTITION BY col1)
FROM tab1