提前谢谢。
我有一个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 的独特计数并更新。 (列 values1 的计数不会超过12)
此表中只有12条记录。对于Exmaple,如果它只有一个 values1 的特定集合,如 ABC0001 那么它应该给我数为12并将其更新为新行,但如果它们不止一个(ABC0001和ABC0002) Values1 那么它应该给我单独计算 values1
输出:
表2:
values1 || Count
ABC0001 || 8
ABC0002 || 4
我尝试使用case语句但是无法做到。
我正在使用MSSQL 2012 提前谢谢。
答案 0 :(得分:1)
使用GROUP BY子句:
SELECT Values1 , COUNT(Values1)
FROM your_table
GROUP BY Values1
答案 1 :(得分:1)
下面你可以找到完整的答案,更新另一张表:
-- 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
答案 2 :(得分:1)
使用窗口功能我们可以得到结果
SELECT DISTINCT Values1,
COUNT(Values2) OVER(PARTITION BY Values1) As COUNTS
FROM YourTablename
结果
Values1 COUNTS
--------------
ABC0001 8
ABC0002 4