[英]Join Two Tables and filter records in sql
我需要在Room No
上加入两个表值。
这是我的表格:
RoomStatusTable
----------------------------------------------------
| Room No | Type | Date | Descriprion |
----------------------------------------------------
| 1 | AC |22 Jan 2015| VA |
| 2 | AC |22 Jan 2015| VA |
| 3 | AC |22 Jan 2015| VA |
| 4 | AC |22 Jan 2015| VA |
RoomBooked表
----------------------------------------------------
| Room No | Type | Date | Descriprion |
----------------------------------------------------
| 1 | AC |22 Jan 2015| BK001 |
| 2 | AC |22 Jan 2015| BLOCK |
| 4 | AC |22 Jan 2015| OC001 |
我需要一个如下结果:
----------------------------------------------------
| Room No | Type | Date | Descriprion |
----------------------------------------------------
| 1 | AC |22 Jan 2015| BK001 |
| 2 | AC |22 Jan 2015| Block |
| 3 | AC |22 Jan 2015| VA |
| 4 | AC |22 Jan 2015| OC001 |
与此类似,表1包含所有记录,但是,表2仅包含基于该更改描述的占用记录作为我的结果。
使用Left join
从两个表中获取数据:
select r1.room_no,
r1.Type,
r1.Date,
case when r2.Descriprion is null then r1.Descriprion else r2.Descriprion end as description
from RoomStatus r1
left join RoomBooked r2 on r1.room_no=r2.room_no
order by r1.room_no;
使用Coalesce函数返回两个描述列之间的第一个非null值,
select r1.room_no,
r1.Type,
r1.Date,
coalesce(r2.Descriprion ,r1.Descriprion) As description
from RoomStatus r1
left join RoomBooked r2 on r1.room_no = r2.room_no
order by r1.room_no;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.