2015-01-06 8 views
2

Мне нужна помощь с тем, что я считал простой задачей. :(SQL Server: количество отсчетов по столбцам

У меня есть таблица в случае SQL Server, который содержит следующие столбцы и данные:

num1 num2 num3 num4 num5 
1  34  15  22  45 
23  4  2  100 23 
1  23  23  100 5 

Я хочу, чтобы получить результаты, которые подсчитывают количество времени появляются все номера:

Number Count 
1  2 
2  2 
3  0 
4  1 
5  1 
6  0 
+2

Вы пробовали писать какие-либо вопросы еще? не могли бы вы обновить этот пост тем, что вы пробовали? – laylarenee

+1

Кроме того, выбор образца не имеет смысла по отношению к вашим данным образца. –

+1

Результаты, которые вы неправильно указали. Должен ли счет 1-го столбца == 2 для данных примера? Не уверен, понимаю ли я ваш вопрос. –

ответ

3

Вы можете использовать оператор UNPIVOT, чтобы получить все ваши значения в один столбец. Тогда его просто GROUP BY и COUNT

select value, count(*) 
from nums 
unpivot 
(
    value 
    for col in (num1, num2, num3, num4, num5) 
) u 
group by value 

SQL Fiddle

4

Выполнение некоторых предположений о желаемых результатах и ​​вашей версии SQL Server

SELECT Number, 
     COUNT(*) AS [Count] 
FROM YourTable 
CROSS APPLY (VALUES(num1),(num2),(num3),(num4),(num5)) V(Number) 
GROUP BY Number 
+0

Спасибо, это, кажется, чтобы получить меня, что я я ищу. –

0

Пример моего комментария выше:

SELECT Number, COUNT(*) AS Count FROM (
SELECT num1 AS Number FROM MyTable 
UNION ALL 
SELECT num2 AS Number FROM MyTable 
UNION ALL 
SELECT num3 AS Number FROM MyTable 
UNION ALL 
SELECT num4 AS Number FROM MyTable 
UNION ALL 
SELECT num5 AS Number FROM MyTable 
) t 
GROUP BY Number 
Смежные вопросы