繁体   English   中英

如何获取匹配的行数并将其更新到表中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM