问题描述
我有一张这样的桌子:
nr1 nr2 nr3 nr4 nr5 nr6 nr7 nr8 nr9 nr10
----------------------------------------
1 4 5 6 8 9 10 17 18 19
3 4 5 7 10 11 14 15 17 18
1 3 5 9 10 12 13 15 16 18
2 3 4 7 8 11 15 16 17 19
5 6 8 9 10 11 13 14 16 19
2 4 8 10 11 12 13 14 19 20
2 5 7 8 10 14 15 16 18 19
1 5 7 8 9 12 13 14 15 18
1 2 3 4 7 10 11 12 14 17
1 3 5 6 7 10 13 14 17 20
我想实现以下目标:
- 将所有这些数字放在仅包含一列的#TEMP表中
- 计算所有数字的出现次数
我相信一旦1将所有数字都放在一列中,我就能轻松实现。但是我坚持第一项。如何将所有这些值仅放在1列中。
我尝试了UNPIVOTing,但由于我做错了事而无法正常工作。
SELECT nr1,nr2,nr3,nr4,nr5,nr6,nr7,nr8,nr9,nr10
FROM table t
UNPIVOT
(
Number for nrs in ( nr1,nr10)
) AS u
解决方法
您不需要临时表。您可以只使用cross apply
和values()
:
select x.nr,count(*) cnt
from mytable t
cross apply (values (nr1),(nr2),(nr3),...,(nr10)) x(nr)
group by x.nr