2013-08-27 43 views
0

我想了解如何使用计算值作为别名的一部分。SQL可以使用计算值作为别名名称

例如:

选择employeeName为“+‘姓名o人’ 外接限定符”人的名字”,但其中‘人的名字’可以是GETDATE()只是防止了代码中从计算。

这有可能以任何方式吗?我打算使用一个分区按年份对结果进行分组,并且我需要列别名以您所在的年份为基础

+1

你需要使用动态SQL有这样的变量名。也就是说,您需要将SQL创建为字符串,然后执行它。 –

+0

我不这么认为。对于返回多行的任何查询,您可能会遇到不明确的问题。 –

回答

1

我不知道这是否是你在找什么,但它可能是一个很好的起点:

DECLARE @var table(rownum int, rowkey varchar(60), ALIAS varchar(80)) 
INSERT INTO @var SELECT row_number() over (ORDER BY employeeName), employeeName, cast(getdate() AS varchar(12))+employeeName FROM Table1 
DECLARE @query varchar(500) 
DECLARE @rowkey varchar(60), @i int, @max int 
SET @i = 1 
SET @max = (SELECT count(*) FROM @var) 
SET @query = '' 
WHILE @i <= @max 
BEGIN 
    SET @rowkey = (SELECT rowkey FROM @var WHERE rownum = @i) 
    SET @query = 'select employeeName as "'+(SELECT ALIAS FROM @var WHERE rowkey = @rowkey)+'" from Table1 where employeeName = '''[email protected]+''';' 
    exec(@query) 
    SET @i = @i + 1 
END; 
0

如果您只希望获得单个值,则可以使用表变量。但是,如果创建了多行,它实际上会变成临时表。如果您认为可能,请将其作为临时表格进行申报。