在具有不同值引用 sql 的相同 table 服务器中查找

Look up in same table with different value reference sql server

我需要一些代码方面的帮助。我有 TableA,其中 Btime 有时为 0。

  TableA

       ID    Dest   Orig    Bcode   Btime
       FB8E  GD     TR      KL      3600
       AC2A  BO     VR      KS      2700
       65B3  GD     AE      LH      7800
       AF85  NY     BU      NWG     3300
       B32A  BO     VR      KS      0
       B42L  NY     BU      NWG     0
       F66D  BO     VR      KS      2700
       N20S  NY     BU      NWG     3300

我需要从同一个 table 中获取 Btime 的值,其中 Dest、Orig 和 Bcode 与 Btime 为 0 的行中的相同,并将 Btime 转换为 HH:MM:SS

结果将是:

      ID    Dest    Orig    Bcode   Btime
      FB8E  GD      TR      KL      01:00:00
      AC2A  BO      VR      KS      00:45:00
      65B3  GD      AE      LH      02:10:00
      AF85  NY      BU      NWG     00:55:00
      B32A  BO      VR      KS      00:45:00
      B42L  NY      BU      NWG     00:55:00

如果有多个值可以满足这个条件,我如何才能为我的整个 table 获取这个?

版本是 Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)

您可以将值转换为 time 格式并使用 window 函数填充值:

select t.*,
       dateadd(second, new_btime, convert(time, 0)) as new_btime_formatted
from (select t.*,
             (case when btime = 0
                   then max(btime) over (partition by dest, orig, bcode)
                   else btime
              end) as new_btime
      from t
     ) t;