【问题标题】:Using case to select field based on value of another field使用案例根据另一个字段的值选择字段
【发布时间】:2016-03-19 10:32:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql postgresql


    【解决方案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 列(自引用)指向主行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多