我有一个纪录:转换记录的每一列到单独的记录
DECLARE @Tbl AS TABLE(Col1 VARCHAR(10), Col2 VARCHAR(10), Col3 VARCHAR(10));
INSERT INTO @Tbl
VALUES('Val1', 'Val2', 'Val3')
-- Source Record
SELECT Col1, Col2, Col3 FROM @Tbl
结果:VAL1 VAL2 VAL3
我想每列作为单独的两列的记录,如第一列将成为结果源列和第二列的标题应源列的像在我所通过UNION ALL
获得的结果如下查询的结果的值:
--Query for Target Result
SELECT 'Col1' AttributeTitle, CONVERT(VARCHAR, Col1) AttributeValue FROM @Tbl
UNION ALL SELECT 'Col2' AttributeTitle, CONVERT(VARCHAR, Col2) AttributeValue FROM @Tbl
UNION ALL SELECT 'Col3' AttributeTitle, CONVERT(VARCHAR, Col3) AttributeValue FROM @Tbl
这个查询中的问题是我必须明确定义列,有没有什么方法可以动态地获取列名和它们的值?
有没有简单的方法。您可以使用模式视图来编写动态sql。或者可能是一个UNPIVOT。 –
请让我知道如何使用模式视图为此目的编写动态SQL? – Shehzad