如何在MySQL中创建简单的交叉表查询

时间:2014-12-01 11:17:03

标签: mysql crosstab

我有两个包含如下字段的表。

表1

    | SetID | InQty | Day |
    |  1    |   10  |  1  |
    |  2    |   10  |  2  |
    |  3    |   10  |  3  |

表2

    | SetID | OtQty | Day |
    |  1    |   1   |  5  |
    |  1    |   2   |  6  |
    |  1    |   3   |  7  |

表2中的SetID与表1中的SetId链接。日期代替日期,仅为方便起见。预期产出,

    | Day  | InQty | OtQty |
    |  1   |   10  |       |
    |  5   |       |   1   |
    |  6   |       |   2   |
    |  7   |       |   3   |

空格可以填充NULL或Zero。

1 个答案:

答案 0 :(得分:0)

看起来你只是查询set ID = 1,否则,我希望看到Set 2和3的输入/输出值。你应该能够得到一个简单的UNION

select t1.Day, t1.InQty, 0 OutQty
   from Table1 t1
   where SetID = 1
   order by t1.Day
union select t2.Day, 0, t2.OtQty
   from Table2 t2
   where SetID = 1

现在,如果您希望总计跨越不同的" setID"并使它们彼此区分,只需将setID添加为列,并同时添加到group by子句中。