【问题标题】:Basically I have three tables with links and trying to get the reults in a single table基本上我有三个带有链接的表,并试图在一个表中得到结果
【发布时间】:2020-04-09 21:36:19
【问题描述】:

我正在尝试使用连接为下表编写一个选择查询,但使用 postgresql 数据库没有得到预期的结果。

表1:

ID      |   cfname                  |
10000   |   "Sprint"                |
10001   |   "Epic Link"             |
10002   |   "Epic Status"           |
10003   |    "Epic Name"            |
10004   |    "Epic Color"           |
10005   |    "Rank"                 |
10006   |    "Story Points"         |
10007   |    "Approvals"            |
10008   |    "Request participants" |
10009   |    "Customer Request Type”|

表2:

Customfield |   Stringvalue
10000       |   ""                      
10001       |   "10250"                     
10002       |   "10400"                     
10003       |   ""                      
10004       |   "Global Payroll Engine - Pi"
10005       |   "10504"                 
10006       |   “L12739"                
10007       |   "10202"                 
10008       |   "colours"   
10009       |   "watkinsh"              

表3:

ID      |   Customvalue
10200   |   PSS
10202   |   Global
10250   |   Upmarket

10300   |   UAT
10350   |   Production
10400   |   QA (FIT)
10450   |   Staging (IAT)
10500   |   Splunk
10504   |   Database
10600   |   Reports

我正在寻找如下结果表:

结果:

Cfname                 |  Stringvalue
"Sprint"               |  ""    
"Epic Link"            |  "Upmarket
"
"Epic Status"          |  "QA (FIT)"
"Epic Name"            |  ""        
"Epic Color"           |  "Global Payroll Engine - Pi"
"Rank"                 |  "Database"
"Story Points"         |  “L12739"
"Approvals"            |  "Global"
"Request participants" |  "colours"
"Customer Request Type”|  "watkinsh"

谁能帮我查询表格中的正确结果。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您可以使用CASE 子句来查找值,如下所示:

    SELECT cfname, 
    
    CASE 
    WHEN trim(table2.Stringvalue,'"') ~ '^([0-9]+)$' THEN (SELECT Customvalue FROM table3 WHERE table3.id=trim(table2.Stringvalue,'"')::int) 
    ELSE table2.Stringvalue
    END as Stringvalue
    
    FROM table1 JOIN table2 ON (table1.id=table2.Customfield);
    
             cfname          |         stringvalue          
    -------------------------+------------------------------
     "Sprint"                | ""
     "Epic Link"             | Upmarket
     "Epic Status"           | QA (FIT)
     "Epic Name"             | ""
     "Epic Color"            | "Global Payroll Engine - Pi"
     "Rank"                  | Database
     "Story Points"          | “L12739"
     "Approvals"             | "10202" 
     "Request participants"  | "colours"
     "Customer Request Type” | "watkinsh"
    (10 filas)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      相关资源
      最近更新 更多