Reputation: 259
I would like to join two columns, lets say t1 and t2.
The serial_number
column in t1 is equal to 3 columns in t2. Instead of writing different queries for each, I want to write them in one query.
My recent query is:
select
t1.date,
t1.type,
count(t1.serial_number) as qty,
from t1 left join t2 on t1.serial_number = t2.serial_number_x
where true
and t1.age > 2
group by
t1.date,
t1.type
The serial_number
is also equal to serial_number_x, serial_number_y, serial_number_z
in t2.
How should I write my query in order to join all the serial_number columns of t2 in t1.
Thanks in advance.
Upvotes: 0
Views: 871
Reputation: 1271141
If I understand correctly, I think you want to unpivot the data and aggregate:
select t1.date, t1.type,
count(v.serial_number) as qty
from t1 left join
(t2 cross join lateral
(values (t2.serial_number_x), (t2.serial_number_y), (t2.serial_number_z)
) v(serial_number)
)
on t1.serial_number = t2.serial_number
where tt1.age > 2
group by t1.date, t1.type;
Upvotes: 0
Reputation: 32021
it seems you are finding multiple condition in join
select
t1.date,
t1.type,
count(t1.serial_number) as qty,
from t1 left join t2
on t1.serial_number = t2.serial_number_x
and t1.serial_number = t2.serial_number_y
and t1.serial_number = t2.serial_number_z
where
t1.age > 2
group by
t1.date,
t1.type
Upvotes: 2