我有一个包含200条记录的表,因此我需要将所有200行显示为200列,因此无法在pivot IN()部分中写入所有200条记录,因为当我在表中插入第201条记录时,其列也应该是所示。
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列 像智者我需要200列,如果我添加201条记录 无论我在哪里执行查询,我都会在插入新记录后获得201列....
答案 0 :(得分:1)
您需要进行动态调整。像这样:
测试数据:
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