次のSELECT
ステートメントはSQL Server 2008でうまく機能します。最大4行まで返す代わりに、結果が1つの結果/行に連結されている必要があります。複数のcaseステートメントを連結
推測できるように、このスクリプトは投薬テーブルをチェックし、投薬が一致すると結果として条件にCASE
を返します。
最初にDISTINCT
、最後にIS NOT NULL
を含めると、それぞれの不一致の薬物または複数の一致する薬物(糖尿病、糖尿病)の結果が最小限に抑えられました。
すべての行には、varchar
のデータが含まれています。
私はCONCAT()
とCOALESCE()
を試してみましたが、毎回短くなりました。
複数の行に正しい結果を返す既存のクエリは次のとおりです。
Select DISTINCT a.conditions
from
(select
CASE
WHEN medication like 'caduet'
THEN 'Hypertension and Cholesterol'
WHEN medication like '%actoplus%'
OR medication like '%actos%'
OR medication like '%amaryl%'
THEN 'Diabetes'
WHEN medication like '%altocor%'
OR medication like '%altoprev%'
OR medication like '%zocor%'
THEN 'Cholesterol'
WHEN medication like '%-nitro%'
OR medication like '%accupril%'
OR medication like '%zosin%'
THEN 'Hypertension'
ELSE NULL
END as Conditions
from
prescriptions
where
patientid = @contactid
and status = 'Active') a
where
a.conditions is not null
ありがとう!
ので、あなたは出力'アスピリン糖尿病hypertension'にしたいですか? –
いいえ一致すると、Then節が出力されます。既存のスクリプトは、それぞれを個々の行に出力します。私はそれらをマージする必要があります。受け入れられた答えはスタンドアロンの解決策として機能しますが、MAX()にネストされた4つの個別のCASE()としてそれらを実行するのが最も効果的です。これにより、他の処理を行うより大きなクエリにクエリを埋め込むことができます。 –