将表转换为MSSQL中的另一种格式

时间:2019-03-13 12:16:06

标签: sql sql-server tsql

我在从特定格式的表获取输出时遇到了MS-SQL的问题。

Name        |    StringValue            |    Parent_ID
FieldName   |    TestHeader1            |    3
FieldValue  |    ValueForTestHeader1    |    3
FieldName   |    TestHeader2            |    6
FieldValue  |    ValueForTestHeader2    |    6

我想从此表中选择数据,如下所示:

TestHeader1             |     TestHeader2
ValueForTestHeader1     |     ValueForTestHeader2

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

您可以使用row_number()dense_rank()进行条件聚合:

select  max(case when seq1 = 1 then stringvalue end),
        max(case when seq1 = 2 then stringvalue end)
from (select t.*, 
             dense_rank() over (order by parent_id) as seq1,
             row_number() over (partition by parent_id order by stringvalue) seq2
      from table t
     ) t
group by seq2; 

答案 1 :(得分:0)

使用条件聚合

select max(case when parent_id=3 then stringvalue)  as col1,
max(case when parent_id=6 then stringvalue)  as col2
from tablename
group by parent_id