交叉连接并将值插入SQL中的表

时间:2019-06-25 00:01:19

标签: mysql sql

我有一个如下的SQL表:

item    | subitem    |   stage    |   id     | 
-----------------------------------------------
i1      | s1         |  picked    |    1     |
i1      | s2         |  shipped   |    1     |
i2      | s4         |  picked    |    2     |
i3      | s10        | shipped    |    2     |
i3      | s11        | eligible   |    0     |
i4      | s2         |not eligible|    0     |
i1      | s1         |  picked    |    3     |
i1      | s2         |  picked    |    3     |

我希望输出如下:

item1|subitem1|item2|subitem2|pair_volume|item1pick|item1ship|item2pick|item2ship|
----------------------------------------------------------------------------------
i1   |   s1   |  i1 | s2     | 2         |  2      | 0       | 2       | 1       |
i1   | s1     | i2  | s4     | 1         |1        | 0       | 1       | 1       |  

....
.....
....

本质上,我想在这里做的是以下事情:

我想首先将item, subitem与自身进行交叉联接,因此我拥有item1subitem1item2,{{1}的所有可能组合}。

这是定义阶段的方式。如果一个阶段是合格的,那么它就是合格的,而如果选择了一个阶段,则意味着该项目既是合格的又是被选择的。如果运送了一个阶段,则意味着该物品是合格的,已拣配并已运送。仅提及最后一个阶段。

现在,对于每对subitem2,我要计算该对发生的item1, subitem1 - item2, subitem2会话的数量,并在id中具有阶段,并在(eligible, shipped, picked)中填充值。例如,pair_volume对出现两次(在(i1,s1)-(i1,s2) 1中发生一次,在id 3中发生一次),并且在这两个id会话中,该对中的两个项目均为{{ 1}}(从ideligible隐含)阶段。在这对符合条件的货币对发生的2次中,item1提货了多少次,item2提货了多少,item1发货了,item2发货了几次?这就是我要解决的问题。

我可以做得很好,直到交叉加入为止。但是我不知道如何将值插入到交叉联接表中。任何帮助深表感谢!

这是我到目前为止所拥有的:

picked

直到交叉连接的查询都可以正常工作。但是我不知道如何进一步计算额外的列。非常感谢任何帮助,谢谢!

0 个答案:

没有答案