[英]how to get the count of matching rows and updating it into the table?
先感谢您。
我有一张桌子1:
ID || Values1 || Values2 ||
1 || ABC0001 || layer1 ||
2 || ABC0001 || layer1 ||
3 || ABC0001 || layer1 ||
4 || ABC0001 || layer1 ||
5 || ABC0001 || layer1 ||
6 || ABC0001 || layer1 ||
7 || ABC0001 || layer1 ||
8 || ABC0001 || layer1 ||
9 || ABC0002 || layer1 ||
10 || ABC0002 || layer1 ||
11 || ABC0002 || layer1 ||
12 || ABC0002 || layer1 ||
我需要找到Values1的不同计数并进行更新。 (列值1的计数将不超过12)
该表中只有12条记录。 对于〔实施例,如果它只有一个particluar设置像ABC0001 值1的话,应该给我算12,并在新行更新,但如果他们有一个以上(ABC0001和ABC0002) 值1,那么它应该给我单独计数这两个值中的1
输出:
表2:
values1 || Count
ABC0001 || 8
ABC0002 || 4
我尝试使用case语句执行此操作,但无法执行。
我正在使用MSSQL 2012提前谢谢。
使用GROUP BY子句:
SELECT Values1 , COUNT(Values1)
FROM your_table
GROUP BY Values1
您可以在下面找到完整的答案,并更新另一个表格:
-- insert output into temp table
SELECT Values1 , COUNT(Values1) as Count
into #temp
FROM your_table
GROUP BY Values1
GO
-- update second table based on values from above output
update b
set Count = t.Count
from your_table2 b
inner join #temp t
on b.Values1 = t.Values1
-- drop temp table
drop table #temp
使用窗口功能,我们可以获得结果
SELECT DISTINCT Values1,
COUNT(Values2) OVER(PARTITION BY Values1) As COUNTS
FROM YourTablename
结果
Values1 COUNTS
--------------
ABC0001 8
ABC0002 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.