T-SQL:计算列和行之间的出现次数

问题描述

我有一张这样的桌子:

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

我想实现以下目标:

  1. 将所有这些数字放在仅包含一列的#TEMP表中
  2. 计算所有数字的出现次数

我相信一旦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 applyvalues()

select x.nr,count(*) cnt
from mytable t
cross apply (values (nr1),(nr2),(nr3),...,(nr10)) x(nr)
group by x.nr

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...