如何在MySQL中创建简单的交叉表查询
我有两个包含如下字段的表 表1如何在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
| 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子句中即可