如何在sql查询中将表的所有记录显示为列?
我有一个包含200条记录的表,所以我需要将所有200行显示为200列。在pivot in()部分中不可能写入所有200条记录,因为当我在表中插入201st记录时,它的列也应该显示出来如何在sql查询中将表的所有记录显示为列?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个包含200条记录的表,所以我需要将所有200行显示为200列。在pivot in()部分中不可能写入所有200条记录,因为当我在表中插入201st记录时,它的列也应该显示出来 select * from Table_Name 返回200行 所以我需要在其他查询中显示200列 SELECT * FROM ( select RecordName from Table_Name ) AS T PIVOT (Max(RecordName) FOR MiscMasterName IN (Rec
select * from Table_Name
返回200行
所以我需要在其他查询中显示200列
SELECT * FROM
(
select RecordName from Table_Name
) AS T
PIVOT (Max(RecordName) FOR MiscMasterName IN (Record1,Record2)) AS T2
给出2列
像wise一样,我需要200列,这样如果我添加201st记录
无论我在哪里执行查询,插入新记录后都会得到201列….您需要进行动态透视。大概是这样的: 测试数据:
CREATE TABLE Table_Name(MiscMasterName VARCHAR(200),RecordName VARCHAR(200))
INSERT INTO Table_Name
VALUES
('Record1','aValue'),
('Record2','SomeValue')
查找列
DECLARE @cols VARCHAR(MAX)
SET @cols=STUFF
(
(
SELECT
',' +QUOTENAME(MiscMasterName)
FROM
Table_Name
FOR XML PATH('')
)
,1,1,'')
声明并执行动态sql
DECLARE @query NVARCHAR(4000)=
N'SELECT
*
FROM
(
SELECT
RecordName,
MiscMasterName
from
Table_Name
) AS T
PIVOT (Max(RecordName) FOR MiscMasterName IN ('+@cols+')) AS T2'
EXECUTE(@query)
清理自己的垃圾
DROP TABLE Table_Name
输出
Record1 Record2
aValue SomeValue
可能重复的