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

如何在MySQL中创建简单的交叉表查询,mysql,crosstab,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中的S

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

表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或零填充。

您似乎只查询集合ID=1,否则,我希望看到集合2和集合3的输入/输出值。你应该能和一个简单的工会打交道

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添加为一列,并将其添加到GROUPBY子句中即可