당신은 dynamic crosstab 사용할 수 있습니다
CREATE TABLE tbl(
ColumnName VARCHAR(20),
ColumnValue VARCHAR(20)
);
INSERT INTO tbl VALUES
('AccountNumber', '123456'),
('AccountBalance', '250'),
('AccountState', 'TX'),
('AccountCity', 'Houston');
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql =
'SELECT' + CHAR(10);
SELECT @sql = @sql +
' MAX(CASE WHEN ColumnName = ' +QUOTENAME(ColumnName, '''') + ' THEN ColumnValue END) AS ' + QUOTENAME(ColumnName) + ',' + CHAR(10)
FROM tbl;
SELECT @sql = SUBSTRING(@sql, 0, LEN(@sql) - 1);
SELECT @sql = @sql + CHAR(10)
+ 'FROM tbl'
PRINT @sql;
EXEC(@sql);
DROP TABLE tbl;
ONLINE DEMO
만 4 열 이름이 있습니까? –
ColumnName 아래의 값은 구별되며 4 – AHS
으로 제한되지 않습니다. 따라서 동적 테이블 또는 엔터티 특성 값 테이블이 빠지기 때문입니다. 그들은 첫 번째 정규 양식을 깨고 정말로 쿼리하기가 어렵습니다. –