我正在使用SQL Server 2012,我有一个名为XMLData
的表,如下所示:
| Tag | Attribute |
|--------------|-----------------------------|
| tag1 | Cantidad=222¬ClaveProdServ=1|
| tag1 | Cantidad=333¬ClaveProdServ=2|
列Tag
有许多重复值,不同的是列Attribute
,它有一串由“¬”分隔的属性。我想分离属性列表,然后转动表,以便标记是列名。
我想要的结果是这样的:
| tag1 | tag1 |
|-----------------|----------------|
| Cantidad=222 | Cantidad=333 |
| ClaveProdServ=1 | ClaveProdServ=2|
我有一个自定义函数可以拆分字符串,因为SQL Server 2012没有预制函数来执行此操作。我收到的功能 string作为参数,分隔符如下:
select *
from [dbo].[Split]('lol1,lol2,lol3,lol4',',')
此函数将返回此:
| item |
|--------|
| lol1 |
| lol2 |
| lol3 |
我找不到一种方法来传递列Attribute
的值作为此函数的参数,如下所示:
SELECT *
FROM Split(A.Attribute,'¬'),XMLData A
然后将列Tag
的值作为每组属性的列名称
答案 0 :(得分:0)
我的魔法水晶球告诉我,你有 - 为什么 - 决定这样做,任何关于的评论都不存储CSV数据对你来说很烦人。
然而......
如果这只是一个语法问题,请尝试这样:
SELECT t.Tag
,t.Attribute
,splitted.item
FROM YourTable AS t
CROSS APPLY dbo.Split(t.Attribute,'¬') AS splitted
否则会显示更多相关详细信息。请阅读How to ask a good SQL question和How to create a MCVE