Как подсчитать записи из нескольких столбцов с помощью sql и asp.net?

У меня есть таблица с 5 столбцами: ID, Session1, Session2, Session3, Session4. Что я хочу сделать, так это отобразить количество одинаковых элементов из каждого столбца. Один и тот же элемент не может отображаться более чем в одном столбце.

ID   Session1   Session2   Session3   Session4  
--   --------   --------   --------   --------  
1    Music      Web        Tech       Future  
2    Art        Articles   Search     Introduction  
3    Music      Books      Camera     Phone  
4    Music      Glass      Cup        Future  
5    Art        Books      Tech       Future  
6    Music      Glass      Cup        Phone

Я хочу отобразить это так на странице asp.net.

Музыка: 4
Искусство: 2
Веб: 1
Статьи: 1
Книги: 2
Стекло: 2
Техника: 2
Поиск: 1
Камера: 1
Кубок: 2
Будущее: 3
Введение: 1
Телефон: 2

как мне построить SQL-запрос и отобразить его на asp.net?


person codeLearner    schedule 07.07.2010    source источник
comment
можешь исправить форматирование? или кто-то другой с более высокой репутацией исправит это?   -  person Tim Coker    schedule 07.07.2010
comment
Кроме того, на каком сервере / версии это работает?   -  person Tim Coker    schedule 07.07.2010
comment
Может ли один и тот же элемент отображаться более чем в одном столбце? В вашем примере их нет, но я хочу убедиться.   -  person Tom H    schedule 07.07.2010
comment
Немного поправил формат (надеюсь, стало лучше). IIS 6. Один и тот же элемент не может отображаться более чем в одном столбце.   -  person codeLearner    schedule 07.07.2010


Ответы (3)


Вы можете просто использовать:

SELECT
    session1,
    COUNT(*)
FROM
    My_Table
GROUP BY
    session1
UNION ALL
SELECT
    session2,
    COUNT(*)
FROM
    My_Table
GROUP BY
    session2
...
person Tom H    schedule 07.07.2010
comment
Я не могу действительно различить порядок в результатах его выборки. Если он упорядочен по столбцу, вам нужно будет добавить жестко закодированное значение для каждого выбора, чтобы вы знали, откуда оно произошло. - person Tom H; 07.07.2010
comment
как отобразить общее количество для каждого элемента, как в моем примере? - person codeLearner; 09.07.2010
comment
я имею в виду, как отображать результаты на веб-странице (asp.net)? - person codeLearner; 09.07.2010
comment
Я не разработчик ASP.NET, поэтому я не могу предоставить вам этот код, но если вы не можете этого сделать и планируете использовать ASP.NET, вам, вероятно, следует взять вводную книгу по ASP или Учебник Google ASP.NET для начала работы. - person Tom H; 09.07.2010

С SQL Server вы можете сделать что-то вроде этого:

  SELECT Session, COUNT(*) FROM (
  SELECT Session1 AS Session FROM TableName
  UNION ALL
  SELECT Session2 AS Session FROM TableName
  UNION ALL
  SELECT Session3 AS Session FROM TableName
  UNION ALL
  SELECT Session4 AS Session FROM TableName) T1
  GROUP BY Session

Это некрасиво, но должно работать.

person DarLom    schedule 07.07.2010

пытаться:

  Select z.Val, Count(*) ValueCount
  From   (Select Distinct session1 val From Table Union
          Select Distinct session2 val From Table Union
          Select Distinct session3 val From Table Union
          Select Distinct session4 val From Table) Z
     Join Table t on Z.Val In (t.Session1, t.Session2, t.Session3, t.Session4)
  Group By z.Val
person Charles Bretana    schedule 07.07.2010