SQL Join基于三个键

时间:2015-09-16 15:14:24

标签: join teradata

数据库是Teradata

我有两张桌子,我想加入。以下是表格结构。当我加入这些表时,我希望得到两行作为输出,但得到4行。这是什么行为的原因。基于三个键的连接应该唯一地标识一行但仍然获得4行作为输出。任何帮助表示赞赏。

TableA
Weekkey|segment|type|users
201501|1|A|100
201501|1|B|100
TableB
Weekkey|segment|type|revenue
201501|1|A|200
201501|1|B|200

当我使用以下查询加入这两个表时,我得到以下结果

select a.* ,b.user
from tablea a left join  tableb b on a.weekkey=b.weekkey 
and  a.segment=b.segment
and  a.type=b.type

Weekkey|segment|type|revenue|users
201501|1|A|200|100
201501|1|B|200|100
201501|1|A|200|100
201501|1|B|200|100

1 个答案:

答案 0 :(得分:1)

使用sql server,这里是ddl和示例数据以及您发布的查询。你声明你得到的输出不会发生在这里。

create table #tablea
(
    Weekkey int
    , segment int
    , type char(1)
    , users int
)

insert #tablea
select 201501, 1, 'A', 100 union all
select 201501, 1, 'B', 100

create table #TableB
(
    Weekkey int
    , segment int
    , type char(1)
    , revenue int
)
insert #TableB
select 201501, 1, 'A', 200 union all
select 201501, 1, 'B', 200

select a.* 
    , b.revenue
from #tablea a 
left join #tableb b on a.weekkey = b.weekkey 
and a.segment = b.segment
and a.type = b.type

drop table #tablea
drop table #TableB