DECODE 函数等同于case when ,在这里配合TRUNC截断日期时间的函数是用来计算住院天数的,其目的是处理住院天数为0的情况。具体来说,当入院时间和出院时间在同一天时,住院天数应该被记为1天。
详细解释
1. TRUNC(D.DISCHARGE_DATE_TIME):
•TRUNC 函数用于截断日期时间,使其只包含日期部分,去除时间部分。
2. TRUNC(D.ADMISSION_DATE_TIME):
•同样,截断入院时间,只保留日期部分。
3. TRUNC(D.DISCHARGE_DATE_TIME) - TRUNC(D.ADMISSION_DATE_TIME):
•计算出院日期和入院日期之间的天数差。
4. DECODE 函数:
•当出院日期和入院日期相同(即天数差为0)时,返回1。
•否则,返回实际的天数差。
完整的 SQL 查询示例
假设你有一个表 hospital_stays,其中包含 ADMISSION_DATE_TIME 和 DISCHARGE_DATE_TIME 字段,你可以使用以下查询来计算住院天数:
SELECT
D.ADMISSION_DATE_TIME,
D.DISCHARGE_DATE_TIME,
DECODE(
TRUNC(D.DISCHARGE_DATE_TIME) - TRUNC(D.ADMISSION_DATE_TIME),