根据条件插入 Datediff 列
INSERT INTO Datediff column based on conditions
我在 Hive 中有一个 table 列:
COL_NAME
patient_num int
proc_start_date string
proc_end_date string
lab string
lab_start_date string
lab_val double
units string
我想添加一个 Datediff 列,如果是在手术前进行的实验室检查 (proc_start_date) returns 天,以及在手术结束后进行的实验室检查 (proc_end_date).
INSERT INTO TABLE t2 SELECT t.*
datediff(lab_start_date, proc_start_date) WHERE lab_start_date < proc_start_date
datediff(lab_start_date, proc_end_date) WHERE lab_start_date > proc_start_date
FROM t2
您能否就编辑我的语法或使用不同的函数提出建议?提前致谢
您可以使用 case when
.
SELECT t.*,
Case when lab_start_date < proc_start_date then datediff(lab_start_date, proc_start_date)
when lab_start_date > proc_start_date then
datediff(lab_start_date, proc_end_date)
End dadediff_col
FROM t2 t
我在 Hive 中有一个 table 列:
COL_NAME
patient_num int
proc_start_date string
proc_end_date string
lab string
lab_start_date string
lab_val double
units string
我想添加一个 Datediff 列,如果是在手术前进行的实验室检查 (proc_start_date) returns 天,以及在手术结束后进行的实验室检查 (proc_end_date).
INSERT INTO TABLE t2 SELECT t.*
datediff(lab_start_date, proc_start_date) WHERE lab_start_date < proc_start_date
datediff(lab_start_date, proc_end_date) WHERE lab_start_date > proc_start_date
FROM t2
您能否就编辑我的语法或使用不同的函数提出建议?提前致谢
您可以使用 case when
.
SELECT t.*,
Case when lab_start_date < proc_start_date then datediff(lab_start_date, proc_start_date)
when lab_start_date > proc_start_date then
datediff(lab_start_date, proc_end_date)
End dadediff_col
FROM t2 t