我有一张桌子,它看起来像这样:
Num1 num2 num3
----------------
1 2 2<----- grouped numbers
1 2 3<----- another group
1 2 3<----- same numbers so I have a value of 2
2 4 4
2 2 3
2 4 3
3
3
4
我想知道如何给数字组,一个数字值。
Example1
1、2、2被水平分组
示例2
1,2,2这个组合显示x次数
1,2,2次= 1
示例3
1,2,3 = 2次
2,3,3 = 4次
这有效,但仅适用于单个数字
select num, count(*)Times
from Numbers cross apply
(values (F2), (F3), (F4),(F5),(F6),(F7),(F8)) v(num)
where num is not null
group by num
order by num;
This also works but same problem
select value, count(*)
from Numbers
unpivot
(
value
for col in (F2, F3, F4,F5,F6,F7,F8,F9)
) u
group by value
ORDER BY 1;
想法是将其扩展到16列,并搜索所有行以找到匹配的内容 每行中的数字集。 给出示例3的输出,“ times”为列名
行数= 2000,列= 16
如果有人可以提供帮助,请发布
答案 0 :(得分:1)
哦,我想您要对每个数字进行计数。您可以通过取消透视和汇总来做到这一点:
select num, count(*)
from t cross apply
(values (num1), (num2), (num3)) v(num)
where num is not null
group by num
order by num;