SQL合并两列:根据hora_saida值动态选择显示对应列数据
解决方案:合并hora_entrada与hora_saida列
没问题,这个需求用SQL的条件判断语句就能轻松实现,我给你两种常用的写法,适配不同数据库场景:
方法一:通用CASE语句(适用于所有主流数据库)
这是最通用的写法,不管你用MySQL、PostgreSQL、SQL Server还是Oracle都能直接用:
SELECT CASE WHEN hora_saida = 'Não saiu' THEN hora_entrada ELSE hora_saida END AS hora_final FROM 你的表名;
逻辑说明:
CASE会逐行检查hora_saida的值:- 如果等于
'Não saiu',就返回hora_entrada的数据; - 否则直接返回
hora_saida的有效时间值;
- 如果等于
- 最后通过
AS hora_final给合并后的列指定一个可读性强的名称,你可以根据需求改成别的名字。
方法二:简化版条件函数(针对特定数据库)
如果你的数据库支持简化的条件函数,还可以写得更简洁:
- MySQL/MariaDB 用
IF函数:
SELECT IF(hora_saida = 'Não saiu', hora_entrada, hora_saida) AS hora_final FROM 你的表名;
- PostgreSQL/Oracle 12c+ 用
IIF函数:
SELECT IIF(hora_saida = 'Não saiu', hora_entrada, hora_saida) AS hora_final FROM 你的表名;
注意事项:
一定要确保字符串 'Não saiu' 和表中实际存储的值完全一致,包括重音符号、大小写和空格,否则条件判断会不生效哦。
内容的提问来源于stack exchange,提问作者Hala mahala
相关产品推荐
相关产品推荐

