我有一个表(不是我自己设计的),其中有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
显然这是行不通的,那么如何获得类似的结果?
'
我已经尝试构建查询字符串并
事实证明,我使用了不正确的查询来构建动态SQL,因此构建了一个空字符串。SQL Server肯定正确执行了空字符串。EXECUTE
对其进行查询,但这仅返回“命令已成功完成”,并且似乎未返回行集。
请注意,我之所以需要这样做,而不是简单地对列名进行硬编码,是因为列名是用户可配置的。
1
如果您将查询字符串打印,复制/粘贴到新的查询窗口并在其中执行,会发生什么?
—
DenisT 2014年
“用户可配置”意味着有成百上千种类型,和/或别名经常更改?如果别名相当稳定,我建议创建一系列视图。
—
所有行业的乔恩2014年
@DenisT,它不输出任何东西,这也许表明还有其他错误。感谢您的带头。
—
Hotchips
@JonofAllTrades不幸的是,尽管它们相当稳定,但它是规范的很大一部分,当用户更改软件中的某些内容时,该内容也必须在报告中进行更改。
—
Hotchips
@DenisT事实证明,我用于构建动态SQL的子查询不正确,并返回了空集。因此,SQL Server返回了一个空白查询,该查询已成功执行。感谢您指出PRINT命令。
—
Hotchips