将 NoSQL 架构中的行转换为 SQL 服务器中的列

Convert rows from a NoSQL schema to columns in SQL Server

我了解如何使用 PIVOT 将行旋转成列,但我有一个独特的场景,其中行也必须分组。源数据来自 NoSQL 数据库模式(非关系)。这是源数据的示例:

ID case_id field_id sequence_number textvalue
1  12897     25            100        AAAAA
2  12897     50            100        BBBBB
3  12897     75            100        CCCCC
4  13587     25            200        DDDDD
5  13587     50            200        EEEEE
6  13587     75            200        FFFFF
7  13587    100            200        GGGGG

我需要的结果是:

case_id  value_field_id_25  value_field_id_50  value_field_id_75  value_field_id_100
12897         AAAAA               BBBBB              CCCCC
13587         DDDDD               EEEEE              FFFFF              GGGGG

所以,我需要的是按sequence_number分组的一行相关记录。具有相同 sequence_number 的行数是动态的(它会变化)。

有什么想法吗?

Declare @SQL varchar(max) = Stuff((Select ',' + QuoteName('value_field_id_'+cast(field_id as varchar(25))) 
                                    From (Select Distinct Top 100 Percent field_id 
                                           From YourTable 
                                           Order by 1) A 
                                     For XML Path('')),1,1,'') 
Select  @SQL = '
Select [case_id],' + @SQL + '
From (
        Select sequence_number  
              ,case_id
              ,ColName = ''value_field_id_''+cast(field_id as varchar(25))
              ,Value   = textvalue
         From YourTable A
     ) A
 Pivot (max([Value]) For [ColName] in (' + @SQL + ') ) p'
Exec(@SQL);

Returns