我想打印所有雇员的姓名,以及该雇员是否出现在表中。
| 员工标识|名称|
| - -|- -|
| 一个|艾伦|
| 2个|最大值|
| 三个|本|
| 员工标识|EC代码|
| - -|- -|
| 一个|配置_1|
| 2个|配置_2|
| 三个|配置_1|
查询:
SELECT
ename,
(CASE
WHEN EXISTS (SELECT 1 FROM m_emp_config ec
WHERE ec_code = 'CONFIG_1' AND emp_id = emp.emp_id)
THEN 'Y'
ELSE 'N'
END) config
FROM
emp emp
我们可以把CASE WHEN EXISTS
写在WHERE
子句中而不是那里吗?
我是SQL新手,请帮助我。
SQL语句的预期输出:
| 名称|配置|
| - -|- -|
| 艾伦|Y型|
| 最大值|不|
| 本|Y型|
3条答案
按热度按时间9rbhqvlz1#
您目前的查询是正确的,可以透过exists执行此作业。以下是使用左链接的替代版本:
ruarlubt2#
使用Decode陈述式
SELECT雇员名称,DECODE(经济部门代码,'配置1','Y','N')AS配置FROM雇员JOIN m_雇员配置经济ON经济雇员标识=雇员标识ORDER BY雇员标识;
使用Case陈述式
如果econ.ec为'Config_1',则为'Y',否则为'N',则结束AS配置FROM雇员m_雇员配置经济ON经济雇员标识=雇员标识ORDER BY雇员标识;
njthzxwz3#
您也可以使用
DECODE
来取代CASE WHEN
建构。