如何根据字段值是否与列名匹配来提取列值?

时间:2016-09-07 19:43:41

标签: sql

我正在尝试编写一些代码,我可以在其中连接两个表,并根据字段是否与列名称匹配来提取列。

例如,

表A有一个名为index的列 - 其值为(IG,HY)。我正在尝试将表A连接到表B - 它具有列名(IG,HY)。我想根据A中列的值是否与B中列的名称匹配来拉入B列。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

您可能必须使用如下的复杂逻辑。以下逻辑检索值TableA并生成动态SQL以从TableB中选择它们。

CREATE TABLE #TableA 
(
   ColumnName VARCHAR(10)
)

INSERT INTO #TableA VALUES ('IG'),('HY')

SELECT * FROM #TableA

CREATE TABLE #TableB
(
   IG VARCHAR(10),
   HY VARCHAR(10)
)

INSERT INTO #TableB VALUES( '1', 'A'), ('2', 'B')

SELECT * FROM #TableB

DECLARE @sql NVARCHAR(100)

SET @sql = 'SELECT ' + STUFF(
                    (
                        SELECT ',' + ColumnName
                        FROM #TableA
                        FOR XML PATH('')
                    ), 1, 1, '') +
            ' FROM #TableB'

EXEC(@sql)

DROP TABLE #TableA
DROP TABLE #TableB