Reputation: 1
Example Tables:
Table: TAB1
Col1 | Col2 | Col3 | Col4 |
---|---|---|---|
A1 | A2 | AA1 | G1 |
A1 | A2 | AA1 | G2 |
Table: TAB2
Col1 | Col2 | Col3 | Col4 |
---|---|---|---|
A1 | A2 | AA1 | H1 |
A1 | A2 | AB1 | H2 |
How to write a query to get Expected Result as:
Col1 | Col2 | Col3 | Col4 | Col5 |
---|---|---|---|---|
A1 | A2 | AA1 | G1 | H1 |
A1 | A2 | AB1 | G2 | H2 |
I tried join but i was getting duplicate values
How to write a query to get Expected Result as:
Col1 | Col2 | Col3 | Col4 | Col5 |
---|---|---|---|---|
A1 | A2 | AA1 | G1 | H1 |
A1 | A2 | AB1 | G2 | H2 |
Upvotes: 0
Views: 83
Reputation: 101
The concept you are looking for is called "equi-join".
The following code should work:
SELECT TAB1.Col1,TAB1.Col2,TAB1.Col3,TAB1.Col4,TAB2.Col4 FROM TAB1,TAB2 WHERE TAB1.Col3=TAB2.Col3;
Upvotes: 0
Reputation: 190
SELECT Col1, Col2, Col3, Col4 FROM TAB1 UNION ALL SELECT Col1, Col2, Col3, Col4 as Col5 FROM TAB2;
Please use this query.
Upvotes: 1
Reputation: 17640
consider generating and joining on row number
DROP TABLE if exists t,t1;
create table t
(Col1 varchar(2), Col2 varchar(2),Col3 varchar(3), Col4 varchar(2));
insert into t values
('A1', 'A2', 'AA1', 'G1'),
('A1', 'A2', 'AA1', 'G2');
create table t1
(Col1 varchar(2), Col2 varchar(2),Col3 varchar(3), Col4 varchar(2));
insert into t1 values
('A1', 'A2', 'AA1', 'H1'),
('A1', 'A2', 'AB1', 'H2');
select a.col1,a.col2,b.col3,a.col4,b.col4 from
(
SELECT *,row_number() over (partition by col1,col2 order by col3,col4) rn FROM t
) a
join
(SELECT *,row_number() over (partition by col1,col2 order by col3,col4) rn FROM t1
)b on b.rn = a.rn;
Upvotes: 0