我有以下SELECT
在SQL Server 2008中工作得很好的語句。現在,我不需要返回最多4行,而是需要將結果連接到單個結果/行。連接多個case語句
正如您可以推斷,這個腳本檢查藥物表,如果藥物匹配,它將CASE
作爲結果。
我已經在開始時加入了DISTINCT
,最後加入了IS NOT NULL
以最大限度地減少每種不匹配藥物或多種匹配藥物(即糖尿病,糖尿病)的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
謝謝!
所以如果一個救護有一個像'阿司匹林actoplus-nitro'一個名字,你想輸出'阿司匹林糖尿病hypertension'? –
否。當匹配時,它輸出Then子句。現有的腳本將每個輸出到一個單獨的行。我需要他們合併。接受的答案作爲獨立的解決方案工作,但最好將它們作爲4個單獨的CASE(),每個嵌套在MAX()中,這樣我就可以將查詢嵌入到執行其他操作的更大的查詢中。 –