在sql

时间:2018-02-11 14:50:42

标签: sql-server

我有一个包含两列hora_entradahora_saida的表格,在运行此select语句时:

select hora_entrada, hora_saida  
from Controlo_de_Entrada_saidas

它显示了这个结果:

enter image description here

我想要做的是将这两列合并为Hora_saida = "Não saiu",如果hora_entrada显示数据,但如果hora_saída中有实际小时,则会显示相反,hora_saida中的数据。

所以基本上这应该是我的结果:

enter image description here

我不知道自己是否清楚自己,我实际上甚至不知道从哪里开始,或者是否可能,但任何帮助都会受到赞赏。

1 个答案:

答案 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表达式。