我正在编写一个查询,从FROM语句中的12个子查询中提取50个字段。每个子查询在项目SKU和品牌ID的两个字段上左连接。但是,有一个表,其中品牌ID在逗号分隔列中连接。
我的问题是我在解析此列时遇到问题,因此我可以将其用作外键来加入其他子查询。我尝试将column =设置为一个变量,然后使用String_Split函数,但是收到错误'没有为列1和#39;在查询中。如果有人对如何将此数据解析为新行有任何建议,以便与其关联的多个品牌的SKU各有一行显示SKU和品牌。我添加了需要解析的数据的屏幕截图。谢谢!
答案 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, ',');
由于你没有共享任何代码,我不可能更具体......但这个例子在我看来应该是你缺少的那部分。