如果缺少特定角色指定,则显示“空缺”

Display "Vacant" if a specific role designation is missing

提问人:Muthusamy Pandurangan 提问时间:11/16/2023 最后编辑:Zohar PeledMuthusamy Pandurangan 更新时间:11/16/2023 访问量:37

问:

我有一个具有以下结构的 SQL 表:

角色 指定 国家
人力资源 导演 美国
人力资源 顾问 美国
人力资源 高级行政人员 印度
人力资源 助理 阿根廷
人力资源 助理 美国
候补董事 日本
顾问 英国

我想创建一个查询,如果缺少“Director”指定,则显示特定角色的“Vacant”。 例如,我给出了表:在角色“IT”中,我们没有 Director,因此我需要添加一行,其中包含空县和“Vacant”作为指定。

预期结果:

角色 指定 国家 输出名称
人力资源 导演 美国 导演
人力资源 顾问 美国 顾问
人力资源 高级行政人员 印度 高级行政人员
人力资源 助理 阿根廷 助理
人力资源 助理 美国 助理
空置
候补董事 日本 候补董事
顾问 英国 顾问
sql-服务器

评论

2赞 GuidoG 11/16/2023
您还需要显示预期结果,并向我们展示您正在尝试的查询,并解释该查询的问题所在
1赞 Zohar Peled 11/16/2023
编辑您的问题,以包括您当前解决问题的尝试。

答:

2赞 Zohar Peled 11/16/2023 #1

组合和条件聚合将为您提供所需的结果。union all

首先,创建并填充示例表(请在以后的问题中保存此步骤):

CREATE TABLE Table1 (
  [role] varchar(2), 
  [designation] varchar(20), 
  [countries] varchar(14)
);
    
INSERT INTO Table1 ([role], [designation], [countries]) VALUES
('HR', 'Director', 'United States'),
('HR', 'Advisor', 'United States'),
('HR', 'Senior Executive', 'India'),
('HR', 'Assistant', 'Argentina'),
('HR', 'Assistant', 'United States'),
('IT', 'Alternative Director', 'Japan'),
('IT', 'Advisor', 'United Kingdom');

查询:

SELECT [role], [designation], [countries], [designation] as [output designation]
FROM Table1
UNION ALL
(
  SELECT role, NULL, NULL, 'Vacant'
  FROM Table1 
  GROUP BY role
  HAVING SUM(IIF(designation = 'Director', 1, 0)) = 0
) 
ORDER BY role, designation

结果:

角色 指定 国家 输出名称
人力资源 顾问 美国 顾问
人力资源 助理 阿根廷 助理
人力资源 助理 美国 助理
人力资源 导演 美国 导演
人力资源 高级行政人员 印度 高级行政人员
空置
顾问 英国 顾问
候补董事 日本 候补董事

评论

0赞 Zohar Peled 11/20/2023
很高兴帮忙:-)