0

对于令人困惑的标题,我很抱歉,我不知道如何用语言表达我想要做的事情。无论如何,我需要评估两列流感和肺炎。计算列评估该行是否包含 Flu 和 Pneumonia 两列中的值,如果该行的 Flu 列包含任何内容,则返回 Flu,如果该行的 Pneumonia 列包含任何内容,则返回 Pneumonia。SQL如下:

CASE
WHEN FluSpecifics != '' THEN 'Flu'
WHEN PneumoniaSpecifics != '' THEN 'Pneumonia'
END as VaccineAdministered

但是,正如您所看到的,如果一行包含两列中的信息,我的查询将只关心 FluSpecifics 列中的值,因为在代码中它排在第一位。为了进一步澄清表格是否如下所示:

 FluSpecifics          PneumoniaSpecifics
successful vaccine      successful vaccine

计算的列 VaccineAdministered 将返回 Flu。如果两者都存在,我需要此列返回两者。因此,如果两列都包含信息,我需要它来创建另一行。我怎样才能做到这一点?此外,我需要将两列都编译成一个名为“Specifics”的列,其中 PneumoniaSpecifics 数据对应于在 VaccineAdministered 字段中创建的具有“肺炎”的行,而 FluSpecifics 数据对应于在 VaccineAdministered 字段中创建的具有“Flu”的行。

如果您需要任何进一步的信息,请告诉我。我不关心确切的语法,我可以自己找出来(我正在使用缓存 SQL)。我宁愿知道这样做的一般方法。非常感谢您提前

4

2 回答 2

1
SELECT 'Flu' as VaccineAdministered
FROM table 
WHERE FluSpecifics != ''

UNION

SELECT 'Pheumonia' as VaccineAdministered
FROM table
WHERE PneumoniaSpecifics != '' 
于 2012-10-10T20:05:55.770 回答
-1
CASE
WHEN FluSpecifics != '' AND  PneumoniaSpecifics != '' THEN 'Flu and Pneumonia'
WHEN FluSpecifics != '' THEN 'Flu'
WHEN PneumoniaSpecifics != '' THEN 'Pneumonia'
END as VaccineAdministered
于 2012-10-10T19:53:25.730 回答