Могу ли я использовать случай SQL для выбора таблицы? - PullRequest
1 голос
/ 16 марта 2011

Я пытаюсь это сделать и получаю сообщение об ошибке.

SELECT Count(*) FROM
        CASE @Type
            WHEN 'UserName' THEN Users WHERE UserName = @Name;                              
            WHEN 'UserGroup' THEN Groups Where GroupName = @GroupName AND GroupType = 'USERGROUP'
        END

Я знаю, что вы обычно используете case после знака '=' ... но есть ли способ сделать то, что я пытаюсь здесь?

sql server 2008.

Ответы [ 2 ]

5 голосов
/ 16 марта 2011

Вам нужно либо написать динамический SQL и выполнить его, либо использовать оператор IF и два запроса ...

IF (@type = 'UserName')
  SELECT COUNT(*) FROM Users WHERE UserName = @name
ELSE IF (@type = 'UserGroup')
  SELECT COUNT(*) FROM Groups WHERE GroupName = @GroupName AND GroupType = 'USERGROUP'
1 голос
/ 16 марта 2011

Нет.

Единственный способ динамически изменять поля, таблицы или базу данных в запросе - это использовать Dyanmic SQL. Хотя это опасно, поэтому действуйте осторожно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...