【发布时间】:2020-12-28 05:50:52
【问题描述】:
我正在尝试通过查询教授学位的不同值来更新表。教师表有一个最终学位字段(值 Y 或 N)。教授可以拥有多个学位,但如果至少存在一行他们的最终学位 = Y,我想将值设置为“最终”。如果只有“N”的值,没有“Y”的值,那么我想将终端度设置为“非终端”
以下是我目前拥有的代码,但它不适用于拥有多个学位(Y 或 N 值)的教授
UPDATE SNP_FACULTY_CENSUS SFC
SET TERMINAL_DEGREE = (
Case
WHEN EXISTS (SELECT DISTINCT(F.TERMINAL_DEGREE)
FROM FACULTY F
left JOIN SNP_FACULTY_CENSUS S
ON F.PERSON_SKEY = S.PERSON_sKEY
)
THEN (SELECT -- USE TERMINAL VALUE FROM FACULTY TABLE
CASE
WHEN F.TERMINAL_DEGREE = 'Y' AND F.TERMINAL_DEGREE = ''--if at least ONE value equals Y
THEN
'Terminal'
WHEN F.TERMINAL_DEGREE = 'Y' -- if all values equal Y
THEN 'Terminal'
WHEN F.TERMINAL_DEGREE = 'N' --if ALL values equal N
THEN
'Not terminal'
ELSE
'Unknown'
END
FROM FACULTY F
left JOIN SNP_FACULTY_CENSUS S
ON F.PERSON_SKEY = S.PERSON_sKEY)
END
)
WHERE SFC.OIR_FALL_TERM = 'Fall 2019'
;
【问题讨论】:
标签: sql join sql-update case