Sql 使用单行中两列中的条目在新列中设置值

Sql 使用单行中两列中的条目在新列中设置值,sql,Sql,数据库表中有3列,id、location\u a、location\u B id location_A location_B 1 ROOM 1 ROOM 2 2 ROOM 2 ROOM 3 3 ROOM 5 MEETING ROOM 现在我想添加一个新的列名长度,如下所示,将在查询中添加如下值 case when LOCATION_A='ROOM 1' AND LOCATION_B='ROO

数据库表中有3列,
id、location\u a、location\u B

id    location_A     location_B
1        ROOM 1         ROOM 2
2        ROOM 2         ROOM 3
3        ROOM 5         MEETING ROOM
现在我想添加一个新的列名长度,如下所示,将在查询中添加如下值

case when LOCATION_A='ROOM 1' AND LOCATION_B='ROOM 2' THEN 6
     when LOCATION_A='ROOM 2' AND LOCATION_B='ROOM 3' THEN 8
等等

id    location_A     location_B            length
1        ROOM 1         ROOM 2                6
2        ROOM 2         ROOM 3                8
3        ROOM 5         MEETING ROOM          50

如果长度计算的逻辑实际上是基于位置A位置B中的实际数据,则可以执行以下操作:

  • 创建一个视图,只需添加长度作为计算列

  • 向表中添加一个新列,并使用您的计算对其进行更新


更新
查询中的
语句时,可以使用该
情况:

UPDATE MyTable
SET length = 
      (case 
         when LOCATION_A='ROOM 1' AND LOCATION_B='ROOM 2' THEN 6
         when LOCATION_A='ROOM 2' AND LOCATION_B='ROOM 3' THEN 8
         else 50
       end)

更新:

上述SQL的Microsoft Access版本:

UPDATE MyTable
SET length = 
    switch(
        LOCATION_A='ROOM 1' AND LOCATION_B='ROOM 2', 6
        , LOCATION_A='ROOM 2' AND LOCATION_B='ROOM 3', 8
        , true, 50)

长度值计算背后的逻辑是什么?我想使用sql查询将两个房间之间的实际距离填入长度栏。上面的case语句似乎不起作用。任何人都可以发送一个完整的sql吗“似乎不起作用”是什么意思?当然,上述情况需要结束。否则,您应该发布您的实际案例陈述。此外,长度由两列中的条目而不是单个列预先确定,即(房间1到房间2=6)每个单独的列都没有任何值。我想增加房间1和房间2之间的距离,取决于位置的数量,这可能会导致一个巨大的案例,但是对时间的数量没有限制。我得到以下错误消息[microsoft]{odbc microsoft access driver}参数太少。预期1。代码3010 SQLSTATE 07001那么您正在使用ms access,是吗?从一开始就应该提到这一点。谢谢它工作了谢谢一个lotsPLS可以检查下面的sql for microsoft access它可以制作compactUPDATE MASTER\u SCHEDULE SET CABLE\u LENTH=switch吗(机架A='RK 1'和机架B='RK 1',6,机架A='RK 2'和机架B='RK 2',6,机架A='RK 3'和机架B='RK 3',6等约20个条件长度为6,机架A='RK 1'和机架B='RK 2'或机架A='RK 2'和机架B='RK 1',6.5,机架A='RK 1'和机架B='RK 3'或机架A='RK 3'还有RACK_B='RK1',7,RACK_A='RK1'和RACK_B='RK4'或RACK_A='RK4'和RACK_B='RK1',7.5等等,没错,0)我不打算在这里继续讨论。发布新问题并描述你在那里之后的情况。在评论中发布未格式化的SQL/代码,随时添加要求。糟糕的态度会让人们不太愿意提供帮助。