【发布时间】:2012-11-22 13:10:04
【问题描述】:
更新:
我最初使用 FULL OUTER JOIN 的尝试没有正常工作。我已经更新了问题以反映真正的问题。很抱歉呈现经典XY PROBLEM。
我正在尝试在一个查询中从多个表中检索数据集,该查询按数据的年月分组。
最终的结果应该是这样的:
|年份 |月 | Col1 | Col2 | Col3 | |------+-------+------+------+------| | 2012 | 11 | 231 | - | - | | 2012 | 12 |第534章12 | 13 | | 2013 | 1 | - | 22 | 14 |来自如下所示的数据:
表 1:
|年份 |月 |数据 | |------+--------+------| | 2012 | 11 | 231 | | 2012 | 12 |第534章表 2:
|年份 |月 |数据 | |------+--------+------| | 2012 | 12 | 12 | | 2013 | 1 | 22 |表 3:
|年份 |月 |数据 | |------+--------+------| | 2012 | 12 | 13 | | 2013 | 1 | 14 |我尝试使用FULL OUTER JOIN,但这并不完全有效,因为在我的SELECT 子句中,因为无论我从哪个表中选择“年”和“月”,都有空值。
SELECT
Collase(t1.year,t2.year,t3.year)
,Collese(t1.month,t2.month,t3.month)
,t1.data as col1
,t2.data as col2
,t3.data as col3
From t1
FULL OUTER JOIN t2
on t1.year = t2.year and t1.month = t2.month
FULL OUTER JOIN t3
on t1.year = t3.year and t1.month = t3.month
结果是这样的(太混乱了,无法准确重复我使用此演示数据会得到的结果):
|年份 |月 | Col1 | Col2 | Col3 | |------+-------+------+------+------| | 2012 | 11 | 231 | - | - | | 2012 | 12 |第534章12 | 13 | | 2013 | 1 | - | 22 | | | - | 1 | - | - | 14 |【问题讨论】:
-
这个问题的标题真的很难用文字表达。如果您能想到更好的请编辑!
-
刚刚意识到 FULL OUTER JOIN 甚至不适用于我想做的事情。例如,如果我选择在 t1.year 和 t1.month 加入每个表,那么如果 t2 和 t3 共享 t1 中不存在的日期,那么它不会正确加入
-
顺便说一句,这个问题现在真的可以用一个更好的名字......有什么建议吗?