表结构和数据为:
col a col c count
107 0
107 0
107 0
107 0
108 0
我可以写什么选择语句来得到这个结果?我想计算“col a”值的数量。
col a col c count
107 4
107 4
107 4
107 4
108 1
表结构和数据为:
col a col c count
107 0
107 0
107 0
107 0
108 0
我可以写什么选择语句来得到这个结果?我想计算“col a”值的数量。
col a col c count
107 4
107 4
107 4
107 4
108 1
您可以使用count() over()
语法:
select cola,
count(cola) over(partition by cola) CountColC
from yourtable
| COLA | COUNTC |
-----------------
| 107 | 4 |
| 107 | 4 |
| 107 | 4 |
| 107 | 4 |
| 108 | 1 |
如果您想使用此数据执行更新,您将使用:
;WITH cte AS
(
SELECT cola,
colc,
count(cola) over(partition BY cola) CountC
FROM yourtable
)
UPDATE cte
SET colc = countc;
你可以使用这个:
select tableName.col_a, cnt
from tableName inner join
(
select col_a, count(col_a) as cnt
from tableName
group by col_a
) tmp on tableName.col_a = tmp.col_a
在更新查询中使用此方法:
update tableName set col_a = cnt
from
(
select col_a, count(col_a) as cnt
from tableName
group by col_a
) tmp
where tableName.col_a = tmp.col_a
如果可以删除重复的条目,这将起作用:
SELECT cola, COUNT(1)
FROM TABLE1
GROUP BY cola
这将返回:
可乐可乐 107 4 108 1