Те же поля от различных таблиц с помощью оператора выбора в SQL Server 2005

Я имею не так тяжелая проблема для Экспертного знания SQL Server. Хотя у меня есть другая альтернатива, но я хочу знать, что это может решенный Оператор выбора использования в 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, ошибка сгенерирована на Операторе выбора

Я знаю, что это может быть сделано с помощью просто оператора IF, но я стремлюсь знать, как он может быть сделан с помощью Оператора выбора.

Может кто-либо помогать мне.

Спасибо за совместное использование Вашего времени.

1
задан IrfanRaza 14 July 2010 в 07:28
поделиться

1 ответ

Ну, вы можете использовать динамический 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)
2
ответ дан 2 September 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: