Oracle11g 因此,援助只能走这么远。谢谢你的精彩解释,这很有道理。该领域的人员只是没有正确输入数据,这给我们带来了很多问题。不过,您可以显示走廊\u分组\u tis中的结构和样本数据,这可能会揭示如何连接表。或者可能没有,或者你已经知道怎么做了……我可以发布数据,这是

Oracle11g 因此,援助只能走这么远。谢谢你的精彩解释,这很有道理。该领域的人员只是没有正确输入数据,这给我们带来了很多问题。不过,您可以显示走廊\u分组\u tis中的结构和样本数据,这可能会揭示如何连接表。或者可能没有,或者你已经知道怎么做了……我可以发布数据,这是,oracle11g,case-when,Oracle11g,Case When,因此,援助只能走这么远。谢谢你的精彩解释,这很有道理。该领域的人员只是没有正确输入数据,这给我们带来了很多问题。不过,您可以显示走廊\u分组\u tis中的结构和样本数据,这可能会揭示如何连接表。或者可能没有,或者你已经知道怎么做了……我可以发布数据,这是一个简单的表格,但可能会有所帮助。这是一个简单的连接,但值得展示anyway@hollow_Victory-抱歉,如果我包含了substr()的所有参数,那会有所帮助。我最后只比较了最后一个字符,而不是除此之外的所有字符。更新并添加了演示。t中


因此,援助只能走这么远。谢谢你的精彩解释,这很有道理。该领域的人员只是没有正确输入数据,这给我们带来了很多问题。不过,您可以显示
走廊\u分组\u tis
中的结构和样本数据,这可能会揭示如何连接表。或者可能没有,或者你已经知道怎么做了……我可以发布数据,这是一个简单的表格,但可能会有所帮助。这是一个简单的连接,但值得展示anyway@hollow_Victory-抱歉,如果我包含了
substr()
的所有参数,那会有所帮助。我最后只比较了最后一个字符,而不是除此之外的所有字符。更新并添加了演示。
t
中是否有值在
s
中没有匹配的(子字符串)版本?使用
TCR\u走廊\u ID
值,或者使用
s.carridor\u RB
的相同子字符串?如果无法选择一条
s
记录,您需要决定要做什么-保留原始值,将其清空(可能不会!),或者其他任何事情。
select distinct t.*,
case
    --** t.Corridor_RB  is full of bad entries
    when t.Corridor_RB <> s.Corridor_RB 
        then s.Corridor_RB --** what I want the data to be
        else s.Corridor_RB
        end as CorrectRb
from PROJECT_CORRS_RB_MILES t left join
corridors_grouped_tis s on 
t.Corridor_RB = s.Corridor_RB
where t.Direction <> 5
order by t.Corridor_RB
TCR_CORRIDOR_ID CORRIDOR_RB SLICED
        C000001 C000001E    1
        C000002 C000002E    2
        C000003 C000003N    3
        C000004 C000004N    4
        C000005 C000005N    5
        C000006 C000006E    6
        C000007 C000007N    7
        C000008 C000008E    8
        C000009 C000009N    9
        C000010 C000010N    10
        C000011 C000011N    11
        C000012 C000012E    12
         FED_ST_PRJ_NBR CONT_ID       ROUTE_NBR DIRECTION   CORRIDOR_RB BEG_TERMINI END_TERMINI
   1    HSIP-MT 1-6(76)384              11713           N-1 3   C000001E    384.0   386.6
   2    MT-NH 1-3(71)255                21216           N-1 3   C000001E    254.6   256.0
   3    HSIP-MT 1-6(76)384              11713           N-1 3   C000001E    384.0   386.6
   4    HSIP-MT 1-6(76)384              11713           N-1 3   C000001E    384.0   386.6
   5    MT-NH 1-3(71)255                21216           N-1 3   C000001E    254.6   256.0
   6    MT-NH 1-3(71)255                21216           N-1 3   C000001E    254.6   256.0
   7    HSIP 1-2(147)136                07C11           N-1 1   C000001N         
   8    NH 1-1(93)16                    08913           N-1 1   C000001N    16.0    44.8
   9    CBI-NHTSA-MT 1-1(79)45          03812           N-1 1   C000001N    44.9    48.6
  10    CBI-NHTSA-MT 1-1(79)45          03812           N-1 1   C000001N    44.9    48.6
t.Corridor_RB = s.Corridor_RB
from PROJECT_CORRS_RB_MILES t left join
corridors_grouped_tis s on 
s.TCR_CORRIDOR_ID = substr(t.Corridor_RB, 1, length(t.Corridor_RB) - 1)
substr(s.Corridor_RB, 1, length(s.Corridor_RB) - 1)
  = substr(t.Corridor_RB, 1, length(t.Corridor_RB) - 1)
with corridors_grouped_tis(TCR_CORRIDOR_ID, CORRIDOR_RB, SLICED) as (
  select 'C000001', 'C000001E', 1 from dual
  union all select 'C000002', 'C000002E', 2 from dual
  union all select 'C000003', 'C000003N', 3 from dual
  union all select 'C000004', 'C000004N', 4 from dual
  union all select 'C000005', 'C000005N', 5 from dual
  union all select 'C000006', 'C000006E', 6 from dual
  union all select 'C000007', 'C000007N', 7 from dual
  union all select 'C000008', 'C000008E', 8 from dual
  union all select 'C000009', 'C000009N', 9 from dual
  union all select 'C000010', 'C000010N', 10 from dual
  union all select 'C000011', 'C000011N', 11 from dual
  union all select 'C000012', 'C000012E', 12 from dual
),
project_corrs_rb_miles (FED_ST_PRJ_NBR, CONT_ID, ROUTE_NBR, DIRECTION, CORRIDOR_RB, BEG_TERMINI, END_TERMINI) as (
  select 'HSIP-MT 1-6(76)384', '11713', 'N-1', 3, 'C000001E', 384.0, 386.6 from dual
  union all select 'MT-NH 1-3(71)255', '21216', 'N-1', 3, 'C000001N', 254.6, 256.0 from dual
  union all select 'HSIP-MT 1-6(76)384', '11713', 'N-1', 3, 'C000001E', 384.0, 386.6 from dual
  union all select 'HSIP-MT 1-6(76)384', '11713', 'N-1', 3, 'C000001E', 384.0, 386.6 from dual
  union all select 'MT-NH 1-3(71)255', '21216', 'N-1', 3, 'C000001E', 254.6, 256.0 from dual
  union all select 'MT-NH 1-3(71)255', '21216', 'N-1', 3, 'C000001E', 254.6, 256.0 from dual
  union all select 'HSIP 1-2(147)136', '07C11', 'N-1', 1, 'C000001N', null, null from dual
  union all select 'NH 1-1(93)16', '08913', 'N-1', 1, 'C000001N', 16.0, 44.8 from dual
  union all select 'CBI-NHTSA-MT 1-1(79)45', '03812', 'N-1', 1, 'C000001N', 44.9, 48.6 from dual
  union all select 'CBI-NHTSA-MT 1-1(79)45', '03812', 'N-1', 1, 'C000001N', 44.9, 48.6 from dual
)
select t.*, s.Corridor_RB as CorrectRb
from PROJECT_CORRS_RB_MILES t left join
corridors_grouped_tis s on 
s.TCR_CORRIDOR_ID = substr(t.Corridor_RB, 1, length(t.Corridor_RB) - 1)
where t.Direction <> 5
order by t.Corridor_RB
/

FED_ST_PRJ_NBR         CONT_ ROU  DIRECTION CORRIDOR BEG_TERMINI END_TERMINI CORRECTR
---------------------- ----- --- ---------- -------- ----------- ----------- --------
MT-NH 1-3(71)255       21216 N-1          3 C000001E       254.6         256 C000001E
HSIP-MT 1-6(76)384     11713 N-1          3 C000001E         384       386.6 C000001E
HSIP-MT 1-6(76)384     11713 N-1          3 C000001E         384       386.6 C000001E
MT-NH 1-3(71)255       21216 N-1          3 C000001E       254.6         256 C000001E
HSIP-MT 1-6(76)384     11713 N-1          3 C000001E         384       386.6 C000001E
MT-NH 1-3(71)255       21216 N-1          3 C000001N       254.6         256 C000001E
HSIP 1-2(147)136       07C11 N-1          1 C000001N                         C000001E
NH 1-1(93)16           08913 N-1          1 C000001N          16        44.8 C000001E
CBI-NHTSA-MT 1-1(79)45 03812 N-1          1 C000001N        44.9        48.6 C000001E
CBI-NHTSA-MT 1-1(79)45 03812 N-1          1 C000001N        44.9        48.6 C000001E

10 rows selected.