使用case根据另一个字段的值选择字段

时间:2015-12-14 01:58:13

标签: sql postgresql

我有一个数据库三个字段:预订类型,预订号码和预订日期。一些值是

 Bookingtype Bookingnum date
 main        0001       10-11-15
 main        0002       09-11-15
 sub         0002a      12-12-15

我需要为每条记录的日期写一个select语句。但是当预订类型为sub时,它应该从主要预订日期开始。在这种情况下,预订2a应该有日期09-11-5 ..我正在使用postgres 9.3并简化了字段,以便其他人更容易理解我需要的东西。

1 个答案:

答案 0 :(得分:1)

假设您的主要号码始终是Bookingnum的前4个字符(缺少明确的定义):

SELECT b.Bookingtype, b.Bookingnum
     , COALESCE(main.date, b.date) AS date
FROM   bookings b
LEFT   JOIN bookings main ON b.Bookingtype = 'sub'
                         AND main.Bookingnum = left(b.Bookingnum, 4);

我会考虑到主行的foreign key列(自引用)。