我想分别从下面的SQLFiddle中联接三个表
http://sqlfiddle.com/#!9/5dd558/4
现在,我想根据日期和品牌从该表中创建一个表。 就像,我想要这种方式的数据
日期,品牌,系列, Table_1_Viewers , Table_2_Viewers , Table_2_Viewers
如果表上的数据不匹配,则该字段应为空。
我做了什么
SELECT h.*,
a.`amazon_viewers` AS "Table_1_Viewers",
n.`views` AS "Table_2_Viewers",
FROM `Table-1` h
LEFT JOIN `Table-2` a
ON h.`date` = a.`date`
AND h.`brand` = a.`brand`
LEFT JOIN `Table-3` n
ON h.`date` = n.`date`
AND h.`brand` = n.`brand`
很显然,我是从表1中选择数据,因此它将仅从表1中显示品牌列,但是如何将所有表的品牌列名称集中在一个列中并合并这些表。?
我想要的输出...
答案 0 :(得分:1)
您可以对聚合进行union all
>
select t.Date, t.Brand, t.Series_name,
sum(case when table_view = 't1' then amazone_viewer else 0 end) as Table_1_Viewers,
. . .
from (select h.date, h.brand, h.series_name, h.amazone_viewer, 't1' as table_view
from `Table-1` h union all
select h1.date, h1.brand, h1.series, h1.viewes, 't2'
from `Table-2` h1 union all
. . .
) t
group by t.Date, t.Brand, t.Series_name;