【问题标题】:Split row values to columns?将行值拆分为列?
【发布时间】:2019-09-03 13:46:37
【问题描述】:

输入表

Id 
1,2,3
6,8,1,2,5
4,9,2,1
6,7,8

我需要这样的输出

Id1 id2 id3 id4   id5
1    2   3  Null  Null
6    8   1   2    5
4    9   2   1    Null
6    7   8  Null  Null

【问题讨论】:

  • 为什么在你的标签中使用 sqlite 和 sql-server?删除不相关的标签。
  • 不要像这样存储分隔数据。使用起来很糟糕,因为它违反了 1NF。
  • 导出数据并重新导入。
  • 到目前为止,您尝试了哪些方法,得到了什么结果?您使用的是什么 DBMS,SQL Server SQLite?

标签: sql sql-server sqlite tsql tsqlt


【解决方案1】:

如果您无法按照 Gordon 的建议重新导入,请尝试以下操作:

Select A.ID
      ,B.*
 From  YourTable A
 Cross Apply (
                Select Pos1  = xDim.value('/x[1]','int')
                      ,Pos2  = xDim.value('/x[2]','int')
                      ,Pos3  = xDim.value('/x[3]','int')
                      ,Pos4  = xDim.value('/x[4]','int')
                      ,Pos5  = xDim.value('/x[5]','int')
                From  (Select Cast('<x>' + replace([Id],',','</x><x>')+'</x>' as xml) as xDim) as A 
             ) B

退货

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2020-02-10
    • 2021-01-24
    • 2012-05-20
    • 2023-03-14
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多