数据库是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
答案 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