繁体   English   中英

在sql中加入两个表并过滤记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM