Я хочу подсчитать, сколько раз люди выбрали определенную опцию в поле выбора (представленное как -элемент с параметрами на веб-странице).Динамический SQL: как я могу получить данные из трех разных таблиц и подсчитать результаты?
Название полей выбора хранится в таблице CodeType
.
> select [CodeTypeID] from [CodeType] where [Name] = 'Favorite Fruit'
CodetypeID
----------
1000210
я могу найти выбор, запрашивая CodytypeID
-стол по найденному CodetypeID
:
> select [ArtifactID], [Name] from [Code] where [CodetypeID] = '1000210'
ArtifactID Name
-------------------
1039477 Apple
1039478 Pear
1039479 Banana
1039912 Peach
Каждое поле выбора имеет отдельную таблицу (с именем CodeArtifact_XXXX
где XXXX является CodetypeID
найденное выше). Путем подсчета количества строк для каждого варианта (идентифицированной CodeArtifactID
) Я могу видеть, сколько раз был выбран выбор:
> select
> count(case when [CodeArtifactID] = '1039477' then 1 else null end) as 'Apple'
> count(case when [CodeArtifactID] = '1039478' then 1 else null end) as 'Pear'
> count(case when [CodeArtifactID] = '1039479' then 1 else null end) as 'Banana'
> count(case when [CodeArtifactID] = '1039477' then 1 else null end) as 'Peach'
> from
> [CodeArtifact_1000210]
Apple Pear Banana Peach
-------------------------------
12 0 7 4
Однако, я должен считать выбор для многих больше choicefields. Поэтому, hardcoding все это не вариант.
Я думаю, что единственное решение здесь - использовать динамический SQL - с чем-то, с чем у меня нет опыта. Может ли кто-нибудь дать мне пример того, как я могу рассчитывать на любое поле выбора, количество вариантов их выбора?
Иные слова: только изменяя поле выбора [Name]
в начале (Favorite Fruit
, «Семейное положение», «Последний диплом» и т. Д.), Выбор должен быть просмотрен и подсчитан автоматически.
Возможно ли это? Любая помощь будет принята с благодарностью.
Возможный дубликат [SQL Server динамический запрос PIVOT?] (Http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot -query) –
EDIT: Я думаю, что Tab ведет вас в хорошем направлении. –
Ничего себе, этот проект базы данных ... Таблицу типа CodeArtifact_1000210' не должно существовать. –