解析包含整数的列

时间:2018-04-25 20:53:36

标签: sql sql-server ssms

我正在编写一个查询,从FROM语句中的12个子查询中提取50个字段。每个子查询在项目SKU和品牌ID的两个字段上左连接。但是,有一个表,其中品牌ID在逗号分隔列中连接。

我的问题是我在解析此列时遇到问题,因此我可以将其用作外键来加入其他子查询。我尝试将column =设置为一个变量,然后使用String_Split函数,但是收到错误'没有为列1和#39;在查询中。如果有人对如何将此数据解析为新行有任何建议,以便与其关联的多个品牌的SKU各有一行显示SKU和品牌。我添加了需要解析的数据的屏幕截图。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

MSSQL文档上的this example与您尝试的完全不同吗?

+-----------+--------------------+----------------------------+
| ProductId |        Name        |            Tags            |
+-----------+--------------------+----------------------------+
|         1 | Full-Finger Gloves | clothing,road,touring,bike |
|         2 | LL Headset         | bike                       |
|         3 | HL Mountain Frame  | bike,mountain              |
+-----------+--------------------+----------------------------+

转化为(注意列名称的变化!)

+-----------+--------------------+----------+
| ProductId |        Name        |  value   |
+-----------+--------------------+----------+
|         1 | Full-Finger Gloves | clothing |
|         1 | Full-Finger Gloves | road     |
|         1 | Full-Finger Gloves | touring  |
|         1 | Full-Finger Gloves | bike     |
|         2 | LL Headset         | bike     |
|         3 | HL Mountain Frame  | bike     |
|         3 | HL Mountain Frame  | mountain |
+-----------+--------------------+----------+

使用

SELECT ProductId, Name, value  
FROM Product  
    CROSS APPLY STRING_SPLIT(Tags, ',');

由于你没有共享任何代码,我不可能更具体......但这个例子在我看来应该是你缺少的那部分。