首页 > 解决方案 > 将多行数据连接到 1 列,但基于两个主键对其进行分组

问题描述

谁能帮我将库存位置的行合并为 1 列

基于分支和productid主键我不确定我可以尝试什么,因为下面的代码只是运行和运行

我需要自己加入才能得到结果吗?有比下面更好的方法吗?

branch  productid  stock-location
1           5           b5
1           3           b2
1           5           b4

branch  productid  stock-location
1           5           b5,b4
1           3           b2

这是我非常糟糕的代码

SELECT Main.zone,
      LEFT(Main.zone,Len(Main.zone)-1) As "ZONE_CODE"
FROM
    (
       SELECT DISTINCT ST2.LOCATION_NBR, 
          (
                SELECT ST1.ZONE_CODE + ',' AS [text()]
                FROM dbo.OPAL_ZONE ST1
                WHERE ST1.LOCATION_NBR = ST2.LOCATION_NBR
                ORDER BY ST1.LOCATION_NBR
                FOR XML PATH ('')
           ) zone
        FROM dbo.OPAL_ZONE sT2
   ) [Main]

标签: sqlsql-servertsql

解决方案


我想通了,对不起这个问题,但我希望我的回答可以帮助别人

       Main.Zone_Loc As "ZONE_CODE"
FROM
    (
        SELECT DISTINCT ST2.LOCATION_NBR, st2.PRODUCT_CODE,
            (
                SELECT ST1.ZONE_CODE + ',' AS [text()]
                FROM dbo.OPAL_ZONE ST1
                WHERE ST1.LOCATION_NBR = ST2.LOCATION_NBR and ST1.PRODUCT_CODE = sT2.PRODUCT_CODE
                ORDER BY ST1.LOCATION_NBR
                FOR XML PATH ('')
            ) [Zone_Loc]
        FROM dbo.OPAL_ZONE sT2
    ) [Main]

推荐阅读