【发布时间】:2018-06-21 17:48:17
【问题描述】:
我需要动态循环列名并获取记录。
下面是我的表,我使用的是 SQL Server 2017。
-- DECLARE @cnt INT = 1;
-- WHILE @cnt < 3
-- BEGIN
-- SELECT 'Name' + @cnt FROM Emp
-- SET @cnt = @cnt + 1;
-- END;
--GO
但此查询不起作用。
如何循环遍历Name+@cnt等列?
预期输出:
User1
User2
User3
Emp表:
【问题讨论】:
-
修复您的数据,使不同的列组位于不同的行中。
-
您可以使用动态 SQL 并以这种方式构建选择,但我认为它的设计方式更成问题,应该为每个不同的名称/地址编号提供一个查找表
-
表结构奇怪。输入表中大概有超过 1 条记录?您是否希望输出是每个输入记录的单行文本,包含三个名称?
-
@JohnRC 是的,这很奇怪,问题是我应该使用这张桌子。我希望每行都有记录。
-
您需要dynamic sql 才能为您的对象名称(表、列、数据库)使用变量。我同意@GordonLinoff 的观点,即您的架构不是很好,这导致您找到了这个相当复杂的解决方案。
标签: sql sql-server database sql-server-2012