查询列之间的循环并选择列名称

问题描述 投票:0回答:1

我想每次使用一个不同的列执行相同的查询几次并打印列名称。

换句话说,我想执行以下操作:

第一个查询

SELECT DISTINCT [Name],[C12],'C12' AS [Description]
FROM #MyTable

第二个查询

SELECT DISTINCT [Name],[C13],'C13' AS [Description]
FROM #MyTable

第三次查询

SELECT DISTINCT [Name],[C14],'C14' AS [Description]
FROM #MyTable

我从现在开始做的是以下代码:

DECLARE @Member AS VARCHAR(20)
DECLARE Csr cursor for SELECT 'C12' UNION SELECT 'C13' UNION SELECT 'C14'
OPEN Csr
    FETCH NEXT FROM Csr INTO @Member
    WHILE (@@fetch_status <> -1)

    BEGIN
        exec('SELECT DISTINCT [Name],'+@Member+', ''+@Member+'' AS [Description]
                    FROM #MyTable
            ')
        FETCH NEXT FROM Csr INTO @Member
    END
CLOSE Csr
DEALLOCATE Csr

这是接近期望的结果,而是我得到的qazxsw poi列

+ @ +会员

而不是每次迭代分配给变量的值。

有人能帮帮我吗?

sql-server while-loop sql-server-2012 cursor exec
1个回答
1
投票

不需要游标,可以使用动态SQL轻松完成:

Description
© www.soinside.com 2019 - 2024. All rights reserved.