在SQL中使用Pivot动态检索多行
我希望为特定透视表添加多行 表名:MasterTable在SQL中使用Pivot动态检索多行,sql,sql-server,pivot,pivot-table,Sql,Sql Server,Pivot,Pivot Table,我希望为特定透视表添加多行 表名:MasterTable FieldName | FieldValue ------------------------ Field1 | F1value1 Field2 | F2value1 Field3 | F3value1 Field1 | F1value2 Field2 | F2value2 Field3 | F3value2 预期结果: Field1 | Field2 | Field3 -
FieldName | FieldValue
------------------------
Field1 | F1value1
Field2 | F2value1
Field3 | F3value1
Field1 | F1value2
Field2 | F2value2
Field3 | F3value2
预期结果:
Field1 | Field2 | Field3
---------------------------------
F1value1 | F2value1 | F3value1
F1value2 | F2value2 | F3value2
我尝试了这个代码,但结果只有一行
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(FieldName) from MasterTable FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
set @query = 'SELECT ' + @cols + ' from (select FieldName, FieldValue from MasterTable ) x
pivot
(
max(FieldValue)
for FieldName in (' + @cols + ')
) p '
execute(@query)
输出:
Field1 | Field2 | Field3
---------------------------------
F1value1 | F2value1 | F3value1
有人能帮我用数据透视表做多行吗 对于子查询,请使用:
(select FieldName, FieldValue,
row_number() over (partition by FieldName order by FieldName) as seqnum
from MasterTable
)
pivot
将在数据透视中考虑这一点
注意:这将保证行数,但每列的顺序是任意的。您可能希望用一个合理的列来替换
订单。它起作用,但在'Field1 | Field2 | Field3 F1value1 null F1value2 null F2Value2 null F2value1 null F3Value2 null F3Value2`@Roshmi。我遗漏了
的分区。更新的版本将解决这个问题。你能再次帮助我吗。我发现显示值时出现问题。它显示出不同的秩序。第1列第1行显示“F1Value1”,第1列第2行显示“F1Value2”,但第2列第1行显示“F2Value2”,第2列第2行显示“F2Value1”。我需要所有的“Value1”作为第一行,“value2”作为第二行。为此,我还向表“RowOrder”添加了一个新字段,该字段将指定数据透视表的顺序。但我找不到解决办法。@Roshmi。新问题应作为新问题提出。