2015-10-30 3 views
0

Я делаю запрос (и длинный, противный извините), чтобы возвращать динамическое обновление значений из системы SAP. Я все понял, но как сделать заголовки столбцов, что я хочу. Они должны быть названы предыдущими 11 месяцами и в этом месяце (или аббревиатурой 3 буквы).Использование динамических значений в AS-части запроса SQL Server

В настоящее время я просто

SELECT ... AS [OCT] 

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

Я понял, что я могу использовать переменный я объявивший использовать в своих функциях, чтобы получить имя три имени письма месяца:

DECLARE @last_month DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 0, 0) 
SELECT CONVERT(char(3), @last_month); 

вернуть выбранный месяц. Как я могу использовать это в поле «AS»?

Вот что я в настоящее время:

DECLARE @last_two_months DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0) 
DECLARE @last_month DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 0, 0) 
SELECT (a whole mess of things that somehow work) AS [SEPT], 
Table.CurrentTotal AS [OCT]; 

Я хотел бы заменить [OCT] с чем-то, что будет возвращать ОКТ в качестве заголовка столбца в течение следующих двух дней, а затем вернуться NOV в течение следующего месяца , и аналогичным образом изменив [SEPT] на то, что вернет SEP в течение следующих двух дней, затем верните OCT на следующий месяц.

ответ

0

Использовать обычные Dynamic Query

DECLARE @last_month DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 0, 0), 
     @alias char(3), 
     @sql nvarchar(max)='' 

SELECT @alias= CONVERT(char(3), @last_month); 

set @sql = 'SELECT ... as ['[email protected]+']..' 

--Print @sql 
exec sp_executesql @sql 

Используйте Print Заявление для отладки динамических запросов

+0

К сожалению, я не очень понимаю, что вы говорите делать. (Я НЕНАВИЖУ ENTER, чтобы СОХРАНИТЬ КОММЕНТАРИЙ). Позвольте мне добавить дополнительную информацию к вопросу. – phroureo

+0

Альтернативно, есть ли способ вернуть имя столбца в виде переменной? Если есть, то я могу заставить его работать. – phroureo

Смежные вопросы