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并简化了字段,以便其他人更容易理解我需要的东西。
答案 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列(自引用)。