小编Hot*_*ips的帖子

如何动态别名列?

我有一个表(不是我设计的),它有 20 个不同命名的列。也就是说,根据您查看的记录类型,列的适用名称可能会发生变化。

可能的列名存储在另一个表中,我可以很容易地查询。

因此,我真正要查找的查询是这样的:

SELECT Col1 AS (SELECT ColName FROM Names WHERE ColNum = 1 and Type = @Type),
       Col2 AS (SELECT ColName FROM Names WHERE ColNum = 2 and Type = @Type)
FROM   Tbl1 
WHERE  Type = @Type
Run Code Online (Sandbox Code Playgroud)

显然这行不通,那么我怎样才能得到类似的结果呢?

' 我已经尝试构建一个查询字符串并对其进行EXECUTEing,但这只是返回“命令成功完成”并且似乎没有返回行集。 事实证明,我使用了不正确的查询来构建动态 SQL,因此构建了一个空字符串。SQL Server 肯定正确执行了空字符串。

请注意,我需要这样做的原因,而不是简单地对列名进行硬编码,是因为列名是用户可配置的。

sql-server dynamic-sql sql-server-2008-r2

12
推荐指数
2
解决办法
9万
查看次数