我有一个包含两列hora_entrada
和hora_saida
的表格,在运行此select语句时:
select hora_entrada, hora_saida
from Controlo_de_Entrada_saidas
它显示了这个结果:
我想要做的是将这两列合并为Hora_saida = "Não saiu"
,如果hora_entrada
显示数据,但如果hora_saída
中有实际小时,则会显示相反,hora_saida
中的数据。
所以基本上这应该是我的结果:
我不知道自己是否清楚自己,我实际上甚至不知道从哪里开始,或者是否可能,但任何帮助都会受到赞赏。
答案 0 :(得分:5)
尝试使用CASE
表达式:
SELECT
hora_entrada,
hora_saida,
CASE WHEN hora_saida = 'Não saiu'
THEN hora_entrada ELSE hora_saida END AS new_column
FROM yourTable;
此逻辑假定hora_saida
列中不 Não saiu
的任何值都是有效的时间戳。如果没有,那么我们可以添加额外的逻辑来检查这一点。
如果您打开/能够更改数据模型,则可能需要考虑仅为缺失的数据存储NULL
值。 SQL Server(以及大多数其他数据库)都有一个内置函数COALESCE
,可用于将NULL
替换为备份值。如上所示,这将避免需要使用冗长的CASE
表达式。