【发布时间】:2021-01-06 01:14:19
【问题描述】:
我有一张这样的桌子:
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, nr2, nr3, nr4, nr5, nr6, nr7, nr8, nr9, nr10)
) AS u
【问题讨论】:
-
看起来这是我想要的:
SELECT x.AllNumbers, COUNT(*) AS Reps FROM NumbersTable CROSS APPLY (SELECT AllNumbers FROM (VALUES (nr1), (nr2), (nr3), (nr4), (nr5), (nr6), (nr7), (nr8), (nr9), (nr10)) AS t (AllNumbers)) x GROUP BY AllNumbers ORDER BY Reps DESC -
如果你在回答自己的问题,你应该把它作为一个答案。
标签: sql sql-server tsql count unpivot