我想了解如何使用计算值作为别名的一部分。SQL可以使用计算值作为别名名称
例如:
选择employeeName为“+‘姓名o人’ 外接限定符”人的名字”,但其中‘人的名字’可以是GETDATE()只是防止了代码中从计算。
这有可能以任何方式吗?我打算使用一个分区按年份对结果进行分组,并且我需要列别名以您所在的年份为基础
我想了解如何使用计算值作为别名的一部分。SQL可以使用计算值作为别名名称
例如:
选择employeeName为“+‘姓名o人’ 外接限定符”人的名字”,但其中‘人的名字’可以是GETDATE()只是防止了代码中从计算。
这有可能以任何方式吗?我打算使用一个分区按年份对结果进行分组,并且我需要列别名以您所在的年份为基础
我不知道这是否是你在找什么,但它可能是一个很好的起点:
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;
如果您只希望获得单个值,则可以使用表变量。但是,如果创建了多行,它实际上会变成临时表。如果您认为可能,请将其作为临时表格进行申报。
你需要使用动态SQL有这样的变量名。也就是说,您需要将SQL创建为字符串,然后执行它。 –
我不这么认为。对于返回多行的任何查询,您可能会遇到不明确的问题。 –