我在 MS SQL Server 数据库中有一个表,其结构如下:
| goodId | pos | description | docType | isKey |
+--------+---------+-------------+----------------+-------+
| 1417 | NULL | List 1050 | 1050.0000.0000 | 0 |
| 1417 | 2.1.1.1 | hgfhgf9 | 1050.0002.0000 | 1 |
| 1417 | 2.1.1.2 | hghgfh0 | 1050.0002.0000 | 1 |
| 1417 | 2.1.1.3 | wwwwww | 1050.0002.0000 | 1 |
| 1417 | NULL | List 1030 | 1030.0000.0000 | 0 |
| 1417 | 1.3.7.6 | tdgfdgfd | 1030.0001.0001 | 1 |
| 1417 | 9.2.1.2 | gdfgfdfd | 1030.0001.0009 | 1 |
| 1417 | 9.2.1 | dddddddd | 1030.0002.0009 | 1 |
最后一列 [docType] 前 4 个字符表示列表的编号,后 4 个字符表示部分的编号。我需要占据 isKey = 1 的位置,但列表的描述应该取自仅填充 4 个第一个字符的行(它将是该列表的描述)
我想使用 SQL XML 从该表中获取 XML 结构,如下所示:
<good Id="1417">
<list num="1050" description="List 1050">
<part num="2">
<pos num = "2.1.1.1"/>
<pos num= "2.1.1.2"/>
<pos num= "2.1.1.3"/>
</part>
</list>
<list num="1030" description="List 1030">
<part num="1">
<pos num = "1.3.7.6"/>
<pos num = "9.2.1.2"/>
</part>
<part num="2">
<pos num = "9.2.1"/>
</part>
</list>
</good>
我应该编写什么查询来获得这个 XML 结构?