Динамическое определение имени столбца по текущей дате в SQL Server - PullRequest
0 голосов
/ 25 марта 2012

У меня есть SELECT оператор:

SELECT  
    ProjectId, 
    ProjectName,               
    D3 as "three month ago",
    D2 as "two month ago",
    D1 as "last month",
    F0 as "current month",
    F1 as "next month",
    F2 as "next two month",        
FROM
    View_Year_Forcast

Я хочу указать имя столбца в соответствии с текущим месяцем.

У меня есть функция get_month_name, которая получает месяцсимвол (d1, d2, d3, f0 ..) и возвращает строку, которая представляет название месяца на иврите.

Каков наилучший способ решения проблемы?

Просто для записи я пытаюсь сделать это в хранимой процедуре в SQL Server

1 Ответ

1 голос
/ 25 марта 2012

Это возможно сделать с помощью динамического SQL:

declare @month nvarchar(50)
declare @sql nvarchar(1000)

set @month = 'March' -- execute your `get_month_name` function here instead

set @sql = 'select D3 as ' + @month + ' from View_Year_Forcast'

exec sp_executesql @sql

Однако у динамического SQL есть свои проблемы.См. Проклятие и благословения динамического SQL для подробного объяснения.

Так что, если это как-то возможно, я бы предпочел не использовать динамический SQL, но сделать что-токак marc_s, предложенный в его комментарии :
оставить запрос как есть, дополнительно вернуть названия месяцев и позволить клиенту отображать названия месяцев в нужном месте.

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