SQL Server 2016 : Turn multiple lines into columns with the different iterations

标签 sql sql-server sql-server-2016

我有一个表,其中有许多用于唯一 MemberID 的 InsuranceNo。如果有多个 InsuranceNo,我希望 InsuranceNo 转移到一列,因此最后每个 MemberID 占一行,该 ID 的 InsuranceNo 的所有迭代都作为一列。

MemberID       InsuranceNo
--------------------------
123456            dser
124571            jklh
123456            abcd

我希望它看起来像这样:

MemberID       InsuranceNo1             InsuranceNo2
-----------------------------------------------------
123456            dser                  abcd
124571            jklh

谢谢!

最佳答案

还有另一种选择...只需将“YourTable”更改为您的实际表名称。

示例

Declare @SQL varchar(max) = '
Select *
 From (
        Select MemberID
              ,Item     = concat(''InsuranceNo'',row_number() over (Partition By MemberID Order By (Select NULL)))
              ,Value    = InsuranceNo
         From YourTable
      ) A
 Pivot (max([Value]) For [Item] in (' + Stuff((Select ','+QuoteName(concat('InsuranceNo',ColNr)) 
                                               From (Select Distinct ColNr=row_number() over (Partition By MemberID Order By (Select NULL)) from YourTable ) A  
                                               For XML Path('')),1,1,'')  + ') ) p'
--Print @SQL
Exec(@SQL);

返回

MemberID    InsuranceNo1    InsuranceNo2
123456      dser            abcd
124571      jklh            NULL

如果它有助于您理解 PIVOT,生成的 SQL 如下所示:

Select *
 From (
        Select MemberID
              ,Item     = concat('InsuranceNo',row_number() over (Partition By MemberID Order By (Select NULL)))
              ,Value    = InsuranceNo
         From YourTable
      ) A
 Pivot (max([Value]) For [Item] in ([InsuranceNo1],[InsuranceNo2]) ) p

关于SQL Server 2016 : Turn multiple lines into columns with the different iterations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057251/

相关文章:

json - SQL Server OPENJSON 读取嵌套的 json

sql-server - sqoop导入sql server仅找到dbo表

sql - 使用日期范围 SQL 自动填充表

mysql - 如何通过 SQL 查询从表中提取最后 5 个条目?

SQL 根据条件求和不同列的值

sql-server - 在 modify() 方法中提供 xml 元素值

sql - 将值转换为两位小数

sql - Azure 数据仓库中的表变量

sql - 如何在sql中的单个查询中查找子节点列表

sql-server - 返回选择结果的标量函数