2015-06-01 3 views
0

Я все еще новичок в tsql и пытаюсь выяснить, как построить этот запрос.Выбор количества значений в нескольких столбцах с использованием двух таблиц

У меня есть две таблицы. Один называется зеркалом, который имеет официальный список всех кампусов и используется для заполнения выпадающего списка кампусов для пользователей на веб-форме. Затем у них есть 5 вариантов, которые они могут выбрать, и затем заполняет другую таблицу своим запросом, когда они отправляют форму (Запрос). то есть. CampusChoice1, CampusChoice2 ..etc.

Я пытаюсь создать страницу для отображения конечных результатов всех собранных данных. После некоторого чтения я думаю, что, возможно, мне понадобится использовать PIVOT, чтобы это произошло, но я не могу понять, как это сделать.

Я могу сделать рудиментарный запрос для каждого выбора1-5, но я вроде хотел, чтобы все они были нулями или нулями, где не были выбраны некоторые кампусы. Что-то вроде

--simple рассчитывать на одного цв ВЫБРАТЬ CampusChoice1, COUNT (*), как '#' FROM запроса Group By CampusChoice1

Или --But это не дает результатов, которые я хотите, поскольку он не учитывает все ВОЗМОЖНЫЕ варианты. ВЫБОР CampusChoice1, COUNT (), как '#', CampusChoice2, COUNT () как '#', CampusChoice3, COUNT () как '#', CampusChoice4, COUNT () как '#', CampusChoice5, COUNT (*), как '#' FROM Operations.dbo.TransferRequest Group By CampusChoice1, CampusChoice2, CampusChoice3, CampusChoice4, CampusChoice5

Любые идеи, как я мог бы показать это? Я на правильном пути, по крайней мере, с таблицей PIVOT?

+0

Имеет ли этот вопрос какое-либо отношение к C#? – phoog

+0

Извините .. я в конечном счете использую этот запрос для построения диаграммы или, может быть, только gridview в C#. Сначала попробуйте прибить запрос. Я удалил тег. – none

+0

Совет. Полезно пометить вопросы базы данных как с помощью соответствующего программного обеспечения (MySQL, Oracle, DB2, ...) и версии, например. 'SQL-сервер-2014'. Различия в синтаксисе и особенностях часто влияют на ответы. – HABO

ответ

0

Не уверен, если я правильно понял ваш вопрос, но если предположить, что у вас есть это:

CampusChoice | Other data ... 
------------------------------ 
CampusChoice1 | ... 
CampusChoice2 | ... 
CampusChoice1 | ... 

Тогда для примера выше только 3 строки вы хотите этот конечный результат:

CampusChoice1 | 2 | CampusChoice2 | 1 | CampusChoice3 | 0 | ... 

T-SQL, чтобы достичь этого:

select 
    'CampusChoice1', 
    sum(case when CampusChoice = 'CampusChoice1' then 1 else 0 end) '#', 
    'CampusChoice2', 
    sum(case when CampusChoice = 'CampusChoice2' then 1 else 0 end) '#', 
    'CampusChoice3', 
    sum(case when CampusChoice = 'CampusChoice3' then 1 else 0 end) '#', 
    ... 
from 
    ... 

Использование сумма в сочетании со случаем, чтобы подвести 1 для каждой строки для CampusChoice1 и 0 для каждой строки, а не CampusChoice1, повторяя это для каждого CampusChoiceN.

+0

Извините. хочу, чтобы я мог включить img, но я слишком новый. Таблица запросов - это многоколоночные идентификаторы, TimeStamp, UserID, затем CampusChoice1, CampusChoice2, CampusChoice3 ... и т. Д. Каждый из них является varchar с названием кампуса, выбранным пользователем из dropDownList в форме. – none

+0

Не волнуйтесь, просто скажите, правильно ли я понял вопрос. Если нет, то что я неправильно понял? –

+0

На самом деле это так (5 таблиц в таблице запроса и 113 кампусах) id | ...CampusChoice 1 | CampusChoice2 | CampusChoice3 | и т.д. ... --------------------------------------------- ------------------------------------ 1 | ... AAA Elem | DDD Elem | XXX MS 2 | ... BBB Elem | AAA Elem | ZZZ HS 3 | ... CCC Elem | XXX MS | TTT Elem – none

Смежные вопросы