如何在给定场景下编写MSSQL单SELECT查询语句获取对应结果表
实现语句
假设fruits表包含fruit_id(水果编号)、fruit_name(水果名称)字段,expiration表包含关联字段fruit_id、expirationDate(过期日期)字段,单条查询语句如下:
SELECT f.fruit_id, f.fruit_name, CASE WHEN MAX(CASE WHEN e.expirationDate IS NULL AND e.fruit_id IS NOT NULL THEN 1 ELSE 0 END) = 1 THEN '该水果存在过期日期为空的记录' ELSE 0 END AS expiration_null_flag FROM fruits f LEFT JOIN expiration e ON f.fruit_id = e.fruit_id GROUP BY f.fruit_id, f.fruit_name ORDER BY f.fruit_id
逻辑说明
- 用
LEFT JOIN关联两张表,确保所有水果记录都被保留,包括未在expiration表登记的编号为4的水果 - 按水果维度分组,每个水果仅返回一条结果
- 嵌套CASE判断:先识别
expiration表中真实存在且过期日期为NULL的记录,取分组内最大值,存在这类记录则返回标注信息,其余场景均返回0,完全匹配需求规则
内容的提问来源于stack exchange,提问作者Grzegorz Kaczmarczyk
相关产品推荐
相关产品推荐

