0

このようなテーブルがあります

col_name   col_white col_red col_brown col_yellow col_one col_two ....
col_white  1          
col_red              4
col_two                                                   12
....

この結果を得るには、選択を行う必要があります。

col_name     col_value
col_white    1
col_red      4
col_two      12

列の数は動的です。どうすればできますか?

ありがとう

4

4 に答える 4

0

これには動的SQLが適していると思います。

DECLARE @SQL AS NVARCHAR(1024)
DECLARE @COL AS NVARCHAR(255)

DECLARE CUR CURSOR FAST_FORWARD FOR
SELECT  t.col_name
FROM mytable t

CREATE TABLE #TempTable(
col_name varchar(50),
col_value varchar(50))

OPEN CUR
FETCH NEXT FROM CUR INTO @COL
WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @SQL = 'INSERT INTO #TempTable SELECT COL_NAME,'+@COL+' FROM mytable where col_name='''+@COL+''''

    EXEC (@SQL)
    FETCH NEXT FROM CUR INTO @COL
END

CLOSE CUR;
DEALLOCATE CUR;

SELECT * FROM #TempTable

DROP TABLE #TempTable
于 2013-09-17T07:42:24.687 に答える