Одинаковые поля из разных таблиц с использованием оператора case в SQL Server 2005 - PullRequest
1 голос
/ 14 июля 2010

У меня не такая сложная проблема для SQL Server Expertise.Хотя у меня есть другая альтернатива, но я хочу знать, что это можно решить с помощью оператора CASE в SQL Server 2005.

У меня есть различные таблицы категорий с одинаковыми столбцами.Что мне нужно, это позвонить SELECT заявление на основе категории.Ниже приведен код, который я пытаюсь сделать

ALTER PROCEDURE [dbo].[Sgi_DropDownListItemsLoadByTblName] 
    @Category int
AS
BEGIN
    SET NOCOUNT ON;


    CASE
        when @Category = 1 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Denomination
        when @Category = 2 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Drink
        when @Category = 3 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Education
        when @Category = 4 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Ethnicity
        when @Category = 5 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Kids
        when @Category = 6 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Religion
        when @Category = 7 Then Select [ID],[OptionText],[Description] From dbo.Sgi_ListItems_Smoking
    end
END

Когда я пытаюсь создать этот SP, генерируется ошибка в операторе CASE

Я знаю, что это можно сделать, используя просто оператор IF, но мне не терпится узнать, как это можно сделать с помощью оператора CASE.

Может ли кто-нибудь мне помочь.

Спасибо, что поделились своим временем.

1 Ответ

2 голосов
/ 14 июля 2010

Ну, вы могли бы использовать динамический sql, но я не думаю, что то, что вы ищете, возможно, как написано. Однако кто-то может удивить меня. Смотрите ниже для быстрой и грязной версии.

DECLARE @Statement varchar(max)
SET @Statement = 'Select [ID],[OptionText],[Description] From '

DECLARE @Category int
SET @Category = 5

SELECT @Statement = @Statement + 
    CASE
        when @Category = 1 Then 'dbo.Sgi_ListItems_Denomination'
        when @Category = 2 Then 'dbo.Sgi_ListItems_Drink'
        when @Category = 3 Then 'dbo.Sgi_ListItems_Education'
        when @Category = 4 Then 'dbo.Sgi_ListItems_Ethnicity'
        when @Category = 5 Then 'dbo.Sgi_ListItems_Kids'
        when @Category = 6 Then 'dbo.Sgi_ListItems_Religion'
        when @Category = 7 Then 'dbo.Sgi_ListItems_Smoking'
    end

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