我希望从表中提取数据并将结果插入到#temp表中,其中列名是结果集的一部分。我知道我可以从架构信息表中获取列名,但我需要其中一列中的数据。原始表中只有一行,所以我基本上是在执行反向STUFF命令或反转Pivot。结果集将是columnName和Value,但是多行 - 与列
一样多的行所以基本上结果集或表只有2列,一列用于列名,一列用于该列中的值。这是我的目标。我知道一个枢轴反过来但是似乎找不到“反向枢轴”。我正在使用SQL Server 2008.
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
您是否能够更好地描述您之后的情况?例如,有关表结构等的更多信息
不管。请参阅下面的示例,了解使用CROSS APPLY
语句转换“数据透视表”的示例。进入一张平台。
数据透视表中的数据
+----+-----------+----------+----------------+
| Id | FirstName | LastName | Company |
+----+-----------+----------+----------------+
| 1 | Joe | Bloggs | A Company |
| 2 | Jane | Doe | Lost and Found |
+----+-----------+----------+----------------+
将数据透视表转换为平面表的SQL语句
IF OBJECT_ID('PivotedTable', 'U') IS NOT NULL
DROP TABLE PivotedTable
GO
CREATE TABLE PivotedTable (
Id INT IDENTITY,
FirstName VARCHAR(255),
LastName VARCHAR(255),
Company VARCHAR(255)
)
INSERT PivotedTable (FirstName, LastName, Company)
VALUES ('Joe', 'Bloggs', 'A Company'), ('Jane', 'Doe', 'Lost and Found')
SELECT
FlatTable.ColumnName,
FlatTable.Value
FROM PivotedTable t
CROSS APPLY (
VALUES
('FirstName', FirstName),
('LastName', LastName),
('Company', Company)
) FlatTable (ColumnName, Value)
转入平台后输出查询
+------------+----------------+
| ColumnName | Value |
+------------+----------------+
| FirstName | Joe |
| LastName | Bloggs |
| Company | A Company |
| FirstName | Jane |
| LastName | Doe |
| Company | Lost and Found |
+------------+----------------+