提前谢谢你。
我有一个table1:
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、和update的不同计数。( values1栏的计数不超过12)
这张桌子上只有12张唱片。对于Exmaple,如果它只有一个values1 (如ABC0001 )的分词集,那么它应该给我计数为12并在新行中更新它,但是如果它们超过一个(ABC0001和ABC0002) Values1,那么它应该给出values1的单独计数。
产出:
table2:
values1 || Count
ABC0001 || 8
ABC0002 || 4我试着用case语句来做这件事,但是做不到。
我正在使用MSSQL 2012预先谢谢您。
发布于 2017-06-29 10:58:49
按条款使用组:
SELECT Values1 , COUNT(Values1)
FROM your_table
GROUP BY Values1 发布于 2017-06-29 11:38:59
下面您可以找到完整的答案,并更新另一个表:
-- 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发布于 2017-06-29 11:46:57
使用窗口函数可以得到结果。
SELECT DISTINCT Values1,
COUNT(Values2) OVER(PARTITION BY Values1) As COUNTS
FROM YourTablename结果
Values1 COUNTS
--------------
ABC0001 8
ABC0002 4https://stackoverflow.com/questions/44823085
复制相似问题