-1

問題は次のとおりです。患者が診療所に来ると、血圧を3回測定することができます。初めてはbp1です。2番目はbp2で、最後はbp3です。

患者が最後に血圧をチェックしたのはいつか、そしてそれが何であったかを知る必要があります。COALESCE(bp3、bp2、bp1)が使えると思いました。でも; システムは、未使用のフィールドを常にNULLにするわけではありません。時々、彼らは空です。

データの例は次のとおりです。

患者IDbp1bp2 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

COALESCE ステートメントを機能させるには、各列を個別に NULLIF する必要があります。

例えば、

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