【发布时间】:2020-12-29 16:55:59
【问题描述】:
我希望在存在值时从表中获取值,否则使用 NULL(或占位符)代替。 我该怎么做?
表格如下所示:
学生 |身份证 |名字 |姓氏 | |----|------------|----------| | 1 |约翰 |能源部 | | 2 |简 |霜 | | 3 |抢 |史密斯 | 学习年 |身份证 |开始日期 |结束日期 |当前年份| |----|-------------------------|------ -------|-----------| | 1 | 2018-09-01 00:00:00.000 | 2019-08-31 00:00:00.000 |第一年 | | 1 | 2019-09-01 00:00:00.000 | 2020-08-31 00:00:00.000 |第二年 | | 1 | 2020-09-01 00:00:00.000 | 2021-08-31 00:00:00.000 |第 3 年 | | 3 | 2020-09-01 00:00:00.000 | 2021-08-31 00:00:00.000 |第一年 |我想要的结果是这样的:
|身份证 |名字 |姓氏|当前年份| |----|------------|----------|------------| | 1 |约翰 |能源部 |第 3 年 | | 2 |简 |霜 |空 | | 3 |抢 |史密斯 |第一年 | | | | | |我用 CASE 尝试了几件事:
(
CASE
WHEN (
YEAR(StudyYear.CurrentYear) = '2020'
) THEN (SELECT StudyYear WHERE YEAR(StudyYear.CurrentYear) = '2020')
ELSE (NULL)
END
) AS CurrentYear
但这会过滤掉未出现在 studyyear 表中的条目。 不做一个案例也会返回另一个表的所有结果。
【问题讨论】:
标签: sql sql-server join case