我有以下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()中,这样我就可以将查询嵌入到执行其他操作的更大的查询中。 –