2015-12-14 116 views
0

我有一个数据库三个字段:预订类型,预订号和预订日期。一些值是使用大小写来根据另一个字段的值来选择字段

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

假设你的主号是始终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列(自引用)的主要行。

相关问题