2015-12-13 44 views
-2

我是SQL Server的新手,我的老板给了我一个字符串,并要求我将其拆分并转换为以下内容。SQL Server查询分割一个字符串,然后将一部分转换为列名和其他值

的样本数据:

enter image description here

期望的结果:

enter image description here

+1

把所有相关信息的问题。请参阅http://stackoverflow.com/help/how-to-ask(如何提出一个好问题)。 –

+0

使用split函数将字符串作为行返回,然后使用枢轴显示为列。 –

回答

0

我不认为有任何直接的答案。

  • 首先split列值代入行
  • 下一页适用conditional aggregatePivot运营商获得 结果

尝试是这样的

;with cte as 
(
SELECT str, 
     rn, 
     replace(Split.a.value('.', 'VARCHAR(100)'),'=','.') split_value 
FROM (SELECT row_number()over(order by str) as rn, 
       str , 
       Cast ('<M>' + Replace(str, '@', '</M><M>') + '</M>' AS XML) AS Data 

     from test) AS A 
     CROSS APPLY Data.nodes ('/M') AS Split(a) 
), split as 
(
select rn,str,parsename(split_value,2) as col_name,parsename(split_value,1) as row_val 
from cte 
) 
select str, 
max(case when col_name = '6ss' then row_val else '' end) as [6ss], 
max(case when col_name = '6mm' then row_val else '' end) as [6mm], 
max(case when col_name = '8mm' then row_val else '' end) as [8mm], 
max(case when col_name = '12mm' then row_val else '' end) as [12mm], 
max(case when col_name = '16mm' then row_val else '' end) as [16mm], 
max(case when col_name = '10mm' then row_val else '' end) as [10mm] 
from split 
group by str,rn 

有方法来分割字符串 N个数在sql server检查这个link与性能比较

+0

谢谢让我试试 – Tariq

+0

非常感谢你,我从上面的查询中得到了结果。 – Tariq

+0

但有一个问题是它没有显示10mm的值。 – Tariq

相关问题