Хранимая процедура: как установить значение поля в возвращаемых данных без изменения таблиц, из которых они получены? - PullRequest
1 голос
/ 16 февраля 2012
SELECT 
        EQ.EventQuestId, 
        EQ.QuestionText, 
        EQ.HelpText, 
        EQ.EventQuestOptType, 
        EQ.DisplayOrder AS QuestDisplayOrder, 
        EQO.EventQuestOptId, 
        EQO.OptionText, 
        EQO.IsOtherSpecify,
        STJC.STJCategory,
        EQO.DisplayOrder AS OptDisplayOrder,
        EA.EventId, EA.AnswerText 
            FROM EventQuest EQ 
            INNER JOIN EventQuestOpt EQO 
                ON EQ.EventQuestId = EQO.EventQuestId 
            LEFT JOIN EventAnswer EA 
                ON EA.EventQuestId = EQ.EventQuestId 
                    AND EA.EventQuestOptId = EQO.EventQuestOptId
                    AND EventId = @EventId
            LEFT JOIN dbo.STJCategories STJC 
                ON STJC.STJID = EQO.STJID
                    WHERE EQO.Status <> 'false'
                        ORDER BY EQ.DisplayOrder, EQO.DisplayOrder

У меня есть это в моем сохраненном процессе.Я хочу установить EQ.QuestionText в значение STJC.STJCategory везде, где EQ.QuestionText = "пример".Я просто хочу это в возвращенном результате, а не в таблице, из которой он получен.Как мне поступить так, потому что я никогда не пытался делать это раньше и не имею понятия, с чего начать, если это возможно.

Надеюсь, это имеет смысл.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Вы можете использовать case для этого:

select  case 
        when EQ.QuestionText = 'example' then STJC.STJCategory 
        else EQ.QuestionText 
        end as QuestionText
2 голосов
/ 16 февраля 2012

используйте оператор CASE

SELECT 
        EQ.EventQuestId, 
        CASE EQ.QuestionText WHEN 'example' 
        THEN STJC.STJCategory ELSE EQ.QuestionText END QuestionText , 
        EQ.HelpText, 
        EQ.EventQuestOptType, 
        EQ.DisplayOrder AS QuestDisplayOrder, 
        EQO.EventQuestOptId, 
        EQO.OptionText, 
        EQO.IsOtherSpecify,
        STJC.STJCategory,
        EQO.DisplayOrder AS OptDisplayOrder,
        EA.EventId, EA.AnswerText 
            FROM EventQuest EQ 
            INNER JOIN EventQuestOpt EQO 
                ON EQ.EventQuestId = EQO.EventQuestId 
            LEFT JOIN EventAnswer EA 
                ON EA.EventQuestId = EQ.EventQuestId 
                    AND EA.EventQuestOptId = EQO.EventQuestOptId
                    AND EventId = @EventId
            LEFT JOIN dbo.STJCategories STJC 
                ON STJC.STJID = EQO.STJID
                    WHERE EQO.Status <> 'false'
                        ORDER BY EQ.DisplayOrder, EQO.DisplayOrder
...