2

私はこのようなことをしようとしています:

--This table has a list of columns I need from #testTableTwo
CREATE TABLE #testTableOne
(
    id  nvarchar(250)
)

--This column has the values I need. I just don't know which columns I want.
CREATE TABLE #testTableTwo
(
    one INT,
    two INT,
    three INT,
    four int
)



INSERT INTO #testTableOne VALUES ('one'),('two'),('three')
INSERT INTO #testTableTwo VALUES (1,2,3,4)
    SELECT (SELECT * FROM #testTableOne) FROM #testTableTwo

だから私がこれになりたいのは:

SELECT ONE, TWO, THREE FROM #testTableTwo

これは可能ですか?nvarchar を作成して COALESCE を使用できることはわかっていますが、それを避けようとしています。これを行う良い方法はありますか?

4

1 に答える 1

2

このような動的 SQL を使用する必要があります。

-- First construct the fields list
DECLARE @fields varchar(500)
SET @fields = STUFF((SELECT ', ' + #testTableOne.id
                FROM #testTableOne
                FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)')
            , 1, 2, '')

-- Next construct the actual SQL statement
DECLARE @sql nvarchar(max)
SET @sql = 'SELECT '+@fields+' FROM #testTableTwo'

-- And last but not least run it.
EXEC sp_executesql @sql
于 2013-03-14T19:28:35.097 に答える