如何使用左联接正确合并

时间:2019-03-24 22:40:40

标签: mariadb

我必须执行多个工会才能获得随着时间推移而分手的价值。所以我有的字段是:CustomerName,CustomerID,2017Q1、2017Q3、2017Q4。每个季度位于一个不同的表中,因此我创建了一个视图,将所有这些视图结合在一起:客户名称,客户ID,季度(REUP得分)和YQ'20XXQX'。我很难将所有内容归为一组,因为它一直向我显示同一ID的多行。

我尝试进行所有并并执行左联接,最近我创建了一个主视图,将所有表合并到一个视图中,现在我试图透视数据,因此我可以为每个CustomerName,CustomerID获得1行,“ 2017Q1”,“ 2017Q3”,“ 2017Q4”等

SELECT
`2017Q1`.`customerInputName` AS `CustomerInputName`,
`2017Q1`.`customerInputCustid` AS `customerInputCustid`,
`2017Q1`.`REUP` AS `Quarter`,
'2017Q1' AS `YQ` 
FROM
`ACC1_2017Q1` `2017Q1` UNION ALL
SELECT
`2017Q3`.`customerInputName` AS `CustomerInputName`,
`2017Q3`.`customerInputCustid` AS `customerInputCustid`,
`2017Q3`.`REUP` AS `Quarter`,
'2017Q3' AS `YQ` 
FROM
`ACC1_2017Q3` `2017Q3` UNION ALL
SELECT
`2017Q4`.`customerInputName` AS `CustomerInputName`,
`2017Q4`.`customerInputCustid` AS `customerInputCustid`,
`2017Q4`.`REUP` AS `Quarter`,
'2017Q4' AS `YQ` 
FROM
`ACC1_2017Q4` `2017Q4`
group by 
    `CustomerInputName`,
    `customerInputCustid`,

结果:

customerInputName    CustomerInputCustID    2017Q1   2017Q3   2017Q4
AMANDA               113345038               657     NULL     NULL
AMANDA               113345038               NULL    NULL     684

所需结果:

customerInputName    CustomerInputCustID    2017Q1   2017Q3   2017Q4
AMANDA               113345038               657     NULL     684

1 个答案:

答案 0 :(得分:0)

您可以像这样使用查询:

select 
  t.customerInputName, t.CustomerInputCustID, 
  max(t.2017Q1) 2017Q1, max(t.2017Q3) 2017Q3, max(t.2017Q4) 2017Q4
from (
  <your query here>
) t
group by t.customerInputName, t.CustomerInputCustID