Reputation: 83
I have tables like this:
job_status_air
status_id | status
-----------+------------
1 | AIRPORT IN
2 | AIRPORT OUT
job_status_air_pkg
id | status_id | package_no
----+------------+------------
1 | 1 | pkg1
2 | 1 | pkg2
3 | 1 | pkg3
4 | 2 | pkg1
I am using the below query:
select package_no ,
(case when job_status_air.status = "AIRPORT IN" then job_status_air_pkg.id end) AIRPORTIN,
(case when job_status_air.status = "AIRPORT OUT" then job_status_air_pkg.id else 0 end) AIRPORTOUT
FROM job_status_air_pkg
LEFT JOIN job_status_air ON (job_status_air.status_id = job_status_air_pkg.status_id)
WHERE job_status_air.mawb = 'awb1' or hawb = 'awb1'
I can't achieve the below result:
package_no | AIRPORT IN | AIRPORT OUT
-----------+------------+-------------
pkg1 | 1 | 4
pkg2 | 2 |
pkg3 | 3 |
Can anybody help me please?
Upvotes: 1
Views: 45
Reputation: 37473
you need to apply aggregation and group by
select package_no ,
max(case when job_status_air.status = "AIRPORT IN" then job_status_air_pkg.id end) AIRPORTIN,
max(case when job_status_air.status = "AIRPORT OUT" then job_status_air_pkg.id else 0 end) AIRPORTOUT
FROM job_status_air_pkg
LEFT JOIN job_status_air ON (job_status_air.status_id = job_status_air_pkg.status_id)
WHERE job_status_air.mawb = 'awb1' or hawb = 'awb1'
group by package_no
Upvotes: 2