如何将select语句中的值添加为新列

时间:2020-06-30 22:01:08

标签: sql join select case

我的餐桌为

ID  FirstName   LastName    ReportsTo       Position    Age
8   Ashley      Johnson     null            Intern      25  
5   Noah        Fritz       Jenny Richards  Assistant   30  
6   David       S           Jenny Richards  Director    32  
3   Jenny       Richards    null            CEO         45  

我想用上表select语句中的值在上表中添加一列作为“老板标题”。但它不起作用。

SELECT *,
    case when ReportsTo='Jenny Richards' then 'CEO'
    else 'None' end 
    as 'Boss Title'
    FROM maintable_L8MOQ where ReportsTo='Jenny Richards' or ReportsTo is null order by age;

3 个答案:

答案 0 :(得分:1)

在新的列名周围使用双引号library(dplyr) library(data.table) df %>% filter(!duplicated(rleid(State))) 。这是工作中的demo

"

答案 1 :(得分:1)

您可以自我加入表格或使用相关的子查询来带出每个员工老板的头衔。

但是,请注意,您的架构没有为此进行适当的优化。您应该指的是每个雇员的老板的id而不是名字:这会更有效(避免字符串连接)和更准确(不存在同音异义词的风险)。

对于您当前的架构,应该是:

select l.*, coalesce(b.title, 'None') boss_title
from maintable_L8MOQ l
left join maintable_L8MOQ b 
    on concat(b.firstName, ' ', b.lastName) = l.reportsTo
order by l.age

答案 2 :(得分:0)

select FirstName,LastName,ReportsTO,Position,Age
      ,(case when ReportsTO='Jenny Richards' then 'CEO' 
             when ReportsTO is null then 'None' 
        else 'None' 
        end) as "Boss Title"
from maintable_H9LYD
where   ReportsTO = 'Jenny Richards' 
     or ReportsTO is null
order by age ASC