-1

问题是:当患者进入医生办公室时,他们可以测量 3 次血压。第一次是bp1;第二次是bp2,最后一次是bp3。

我需要找到病人最后一次检查血压的时间以及是什么时候。我想我可以使用 COALESCE(bp3,bp2,bp1)。然而; 系统并不总是将未使用的字段设为 NULL。有时,它们是空的。

数据的一个例子是:

患者 ID bp1 bp2 bp3 12345 140/90 134/30
12346 NULL 128/68 NULL

然后,我想我会使用 COALESCE(NULLIF(bp3,bp2),bp1) 但这不起作用,因为有时数据库显示 bp1 为 NULL 或 bp1 和 bp3 为 NULL,但 bp2 中有血压。

有人对如何解决这个问题有任何想法吗?

谢谢!

4

2 回答 2

1

案子呢?我不知道数据类型,所以我猜是 INT

case when bp3 > 0 then bp3
     when bp2 > 0 then bp2
     else bp1
end as bp

对于字符串(varchar)数据类型

case when len(bp3) > 0 then bp3
     when len(bp2) > 0 then bp2
     else bp1
end as bp
于 2012-06-22T18:57:17.043 回答
1

您必须单独 NULLIF 每一列才能使 COALESCE 语句起作用。

例如,

COASLESCE(NULLIF(bp3, 0), NULLIF(bp2, 0), NULLIF(bp1, 0))
于 2012-06-22T18:59:23.687 回答