我有以下数据:
ColumnA ColumnB ColumnC
Group1 Part1 A
Group1 Part1 B
Group1 Part2 C
Group2 Part3 B
Group2 Part3 C
Group3 Part2 A
O / P:
ColumnA ColumnB ColumnC Count_Part
Group1 Part1 A 1
Group1 Part1 B 0
Group1 Part2 C 1
Group2 Part3 B 1
Group2 Part3 C 0
Group3 Part2 A 1
逻辑是如果一个部分在一个组中重复,那么它应该在一个组内被计为唯一。但如果同一部分在另一组中,我们会再次计算它。 如果我可以像上面那样创建一个列,问题就会解决。
我尝试制作计算列: 如果(isnull(ColumnB)= 1或ColumnB ='',0,1) 但这只是给了我非唯一计数,因此Part1将在Group1中计算两次,但情况并非如此。
答案 0 :(得分:0)
好的,我想我明白了。
select ColumnA, count(ColumnB)
from(select distinct ColumnA, ColumnB from Table1)
group by ColumnA;
FROM语句将可选区域缩小到唯一的行。
ColumnA ColumnB
Group1 Part1
Group1 Part2
Group2 Part3
Group3 Part2
然后从上面开始,主SELECT语句获取Group#和组中的部分数。然后数据通过GROUP BY对结果计数进行分组。
ColumnA ColumnB
Group1 2
Group2 1
Group3 1