内部连接不在配置单元中提供结果

prdp8dxp  于 2021-06-24  发布在  Hive
关注(0)|答案(3)|浏览(234)

我想加入4个Tables。一个是主表,并将其他3个表与此主表连接。请参见如下数据:


预期产出。

这是我开发的查询,它总是返回0行。

select COALESCE(TableB.Date, TableC.Date, TableD.Date), 
       COALESCE(count(key1),0), 
       COALESCE(count(key2),0), 
       COALESCE(count(key3),0)
FROM TableA A JOIN TableB B on A.Date = B.Date 
JOIN TableC C on A.Date = C.Date
JOIN TableD D on A.Date = D.Date
Group by COALESCE(TableB.Date, TableC.Date, TableD.Date);

当我用tablea对每个表(见下面的查询)运行单独的查询时,它返回数据,但是当我加入所有3个表时,它不会返回任何数据。

select TableB.Date, count(key1)
  FROM TableA A JOIN TableB B on A.Date = B.Date 
Group by TableB.Date;

我不确定出了什么问题,有人能帮助我理解join查询中的问题在哪里。
谢谢,巴布

nkoocmlb

nkoocmlb1#

你可以试试这个-

select A.Date, 
       COALESCE(count(key1),0), 
       COALESCE(count(key2),0), 
       COALESCE(count(key3),0)
FROM TableA A 
LEFT JOIN TableB B on A.Date = B.Date 
LEFT JOIN TableC C on A.Date = C.Date
LEFT JOIN TableD D on A.Date = D.Date
Group by A.Date;

我使用左连接而不是内连接,因为我们需要表a中的所有数据。第一列也应该来自表a,即驱动程序表。

cygmwpex

cygmwpex2#

在子查询中进行连接,然后进行分组,例如。,

with join_table as (select COALESCE(TableB.Date, TableC.Date, TableD.Date) as Date, 
    key1, key2, key3
    FROM TableA A JOIN TableB B on A.Date = B.Date 
    JOIN TableC C on A.Date = C.Date
    JOIN TableD D on A.Date = D.Date
)
select Date,
       COALESCE(count(key1),0), 
       COALESCE(count(key2),0), 
       COALESCE(count(key3),0)
  from join_table
 group by Date

实际上,不需要在内部连接中合并连接键。

wtlkbnrh

wtlkbnrh3#

我想你在寻找完全的外部连接。下面是示例代码

select COALESCE(a.Date, b.Date, c.Date,d.Date), 
       COALESCE(sum(key1),0), 
       COALESCE(sum(key2),0), 
       COALESCE(sum(key3),0)

(select distinct date as date from tableA ) as a
full outer join 
(select  date ,sum(key1) as key1 from tableB group by date) as b
on a.date=b.date
full outer join
(select  date ,sum(key2) as key2 from tableB group by date) as c
on a.date=c.date
full outer join
(select  date ,sum(key3) as key2 from tableB group by date) as d
on a.date=d.date
Group by COALESCE(a.Date, b.Date, c.Date,d.Date);`

相关问题