【问题标题】:is lookup function available in SQL serverSQL Server 中是否提供查找功能
【发布时间】:2015-06-22 21:19:00
【问题描述】:

我正在尝试执行以下任务。我有 2 个包含以下数据的表?

表1:

objectid    name          LOCATION   Project Manager

4584     Client             NULL     Indicator

4591     Ericsson           NULL     Indicator

4604     NEW201             Text     NULL

表2:

projectobjectid     name      value

4584             Indicator    Red

4591             Indicator    Green

4604             Text         Sf001-bb1-5

4604             Text         Sf001-bb1-4

4604             Text         Sf001-bb1-3

4604             Text         Sf001-bb1-2

结果如下:

objectid    name                     LOCATION        Project Manager

4584        Client                     NULL              Red

4591        Ericsson                    NULL             Green

4604         NEW201                  Sf001-bb1-5          NULL

4604         NEW201                  Sf001-bb1-4          NULL

4604         NEW201                  Sf001-bb1-3          NULL

4604         NEW201                  Sf001-bb1-2          NULL

从表 2 更新表 1。

【问题讨论】:

    标签: sql sql-server select pivot lookup


    【解决方案1】:

    您可以使用两个left joins 来执行此操作,每个用于您要替换的列:

    SELECT    t1.objectid, t1.name, l1.value, l2.value
    FROM      table1 t1
    LEFT JOIN table2 l1 ON t1.objectid = l1.projectobjectid AND 
                           t1.location = l1.name
    LEFT JOIN table2 l2 ON t1.objectid = l2.projectobjectid AND 
                           t1.projectmanager = l2.name
    

    SQL Fiddle Demo

    【讨论】:

    • 添加了 sql fiddle 演示(希望你不介意!),也可以! +1!
    【解决方案2】:

    你去(只有一个左连接):

    SELECT t1.objectid, t1.name, 
    CASE t1.location WHEN t2.name THEN t2.value END as Location, 
    CASE t1.projectmanager WHEN t2.name THEN t2.value END as ProjectManager
    FROM table1 t1
    LEFT JOIN table2 t2 ON t2.projectobjectid=t1.objectid
    

    SQL Fiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2011-05-13
      • 1970-01-01
      相关资源
      最近更新 更多