DATENAME作为列名?

时间:2014-09-01 09:00:22

标签: sql sql-server sql-server-2008 tsql

我一直在阅读相当多的SO线程&其他人如何实现这一目标,但没有什么能真正帮助我。

IE:

How do I name a column as a date value

current month as column name

todays date as a column name to a simple select statement.

我可以继续向你展示我读过的帖子,但似乎没有人回答我的想法。

基本上,我在SQL中尝试做的是:

SELECT
    Blahblah AS DATENAME(MONTH, GETDATE()) --AS "September"

OR

DECLARE
    @CM VARCHAR(50)

SET
    @CM = DATENAME(MONTH,GETDATE())

SELECT 
    Blahblah AS @CM --AS "September"

我知道这些都不起作用,但那是为了告诉你我想做什么。有没有人能够做到这一点?

你能指点一下你可能已经读过的一篇帮助你这么做的主题吗?

非常感谢,

麦克

2 个答案:

答案 0 :(得分:2)

您可以使用这样的动态SQL:

create table t (val int)
insert t values (100)

declare @month varchar(20) = datename(month, getdate())

declare @sql varchar(max)
set @sql = 'select val as ' + @month + ' from t'
exec (@sql)

结果:

September
-----------
100

答案 1 :(得分:0)

试试这个

DECLARE
@CM VARCHAR(50),
@sql varchar(max)
SET    @CM = DATENAME(MONTH,GETDATE())

SET @sql ='SELECT 
''Blahblah'' as '+ @CM
exec(@sql)