【问题标题】:how to have columns which does not have values for certain records in SQL query如何在 SQL 查询中获得某些记录没有值的列
【发布时间】:2019-02-01 23:01:56
【问题描述】:

我需要生成一个输出来显示一个 id(来自表 1)的不同备注(来自表 2),但备注不是必须出现在表 2 中。

Tried Case 函数,但它也将 NULL 值作为额外的一行

表:员工 ID

ID      Name            
100021  Bob         
100023  Tom         
100024  Jim         

表:员工备注

ID      remark  remark text     
100021  job     manager     
100021  salary  5000        
100021  dept    classic     
100023  job     CSR     
100023  salary  4000        
100024  dept    customer        

要求的结果

ID      Name    Job     Salary  Dept
100021  Bob     manager 5000    classic
100023  Tom     CSR     4000    NA
100024  Jim     NA      NA      customer

【问题讨论】:

  • 欢迎来到 StackOverflow!显示您尝试过的 SQL。纠正一些不太正确的事情比盲目猜测更容易
  • 害怕,我没有太多事情要做。附上的截图大家能看吗?请告诉我。

标签: sql database join group-by pivot


【解决方案1】:

您似乎正在寻找条件聚合:

SELECT 
    i.id,
    i.name,
    COALESCE(MAX(CASE WHEN r.remark = 'job'    THEN r.remark_text END), 'NA') AS job,
    COALESCE(MAX(CASE WHEN r.remark = 'salary' THEN r.remark_text END), 'NA') AS salary,
    COALESCE(MAX(CASE WHEN r.remark = 'dept'   THEN r.remark_text END), 'NA') AS dept
FROM 
    employee_id AS i
    INNER JOIN employee_remark r ON r.id = i.id
GROUP BY 
    i.id,
    i.name

查询通过将两个表连接在一起然后按用户聚合结果来工作。在SELECT 子句中,MAX(CASE WHEN WHEN r.remark = 'job' ...) 用于将行从employee_remark 旋转到列中。 COALESCE() 函数检测NULL 值并将其替换为字符串'NA'

【讨论】:

    【解决方案2】:

    如果有帮助请告诉我

    select e.*, job,salary, dept
    from Employee_id e left join 
    (SELECT r.id,
             MAX(CASE WHEN r.remark = 'job' THEN r.remark_text ELSE 'NA' END) AS job,
             MAX(CASE WHEN r.remark = 'salary' THEN r.remark_text ELSE 'NA' END) AS salary,
             MAX(CASE WHEN r.remark = 'dept' THEN r.remark_text ELSE 'NA' END) AS dept
        FROM Employee_Remarks r
    GROUP BY r.id) rr
    on e.id=rr.id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多