0

我有一个非常大的表,其中包含产品移动交易(FROM-TO)。

示例表

+-----------------+----------------+--------------+--------+
| FROM STATION ID | TO STATION ID  | Product Type | Volume |
+-----------------+----------------+--------------+--------+
| A               | B              | T1           |   1000 |
| B               | C              | T1           |    300 |
| B               | D              | T1           |    400 |
| C               | E              | T1           |    200 |
| C               | F              | T1           |    100 |
+-----------------+----------------+--------------+--------+

我需要以 SQL 方式将这些事务连接在一起,以便我可以将这些卷的成本正确地分配给每个站点。

预期结果

  1. A->B->C->E
  2. A->B->C->F
  3. A->B->D

目前,我通过循环将表与表本身连接以连接事务来执行此操作。在这种情况下,它将循环加入原始表本身 3 次。但是,处理需要花费太多时间,尤其是在事务数量增加时。

你能帮我建议任何更聪明的 SQL 方法来解决这个问题吗?

谢谢。

4

1 回答 1

0

试试这个可以根据数据库用 listagg 替换 group_concat

     Select [from] , group_concat(case 
     when [from] 
      <> t.[from] 
        and
        to=t.[from] then t.to end, ',' ) 
         from(  Select 
       * FROM  table) t group by
         from 
于 2019-12-14T16:47:44.117 回答