提问人:Muthusamy Pandurangan 提问时间:11/16/2023 最后编辑:Zohar PeledMuthusamy Pandurangan 更新时间:11/16/2023 访问量:37
如果缺少特定角色指定,则显示“空缺”
Display "Vacant" if a specific role designation is missing
问:
我有一个具有以下结构的 SQL 表:
角色 | 指定 | 国家 |
---|---|---|
人力资源 | 导演 | 美国 |
人力资源 | 顾问 | 美国 |
人力资源 | 高级行政人员 | 印度 |
人力资源 | 助理 | 阿根廷 |
人力资源 | 助理 | 美国 |
它 | 候补董事 | 日本 |
它 | 顾问 | 英国 |
我想创建一个查询,如果缺少“Director”指定,则显示特定角色的“Vacant”。 例如,我给出了表:在角色“IT”中,我们没有 Director,因此我需要添加一行,其中包含空县和“Vacant”作为指定。
预期结果:
角色 | 指定 | 国家 | 输出名称 |
---|---|---|---|
人力资源 | 导演 | 美国 | 导演 |
人力资源 | 顾问 | 美国 | 顾问 |
人力资源 | 高级行政人员 | 印度 | 高级行政人员 |
人力资源 | 助理 | 阿根廷 | 助理 |
人力资源 | 助理 | 美国 | 助理 |
它 | 零 | 零 | 空置 |
它 | 候补董事 | 日本 | 候补董事 |
它 | 顾问 | 英国 | 顾问 |
答:
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
很高兴帮忙:-)
评论