SQL评估两列并创建两行(可能)

时间:2012-10-10 19:47:52

标签: sql

我很抱歉这个令人困惑的标题,我不知道如何说出我想要做的事情。 无论如何,我需要评估两个列Flu和Pneumonia。计算列将评估该行是否包含两个列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字段中创建的具有“Pneumonia”的行,以及对应于在VaccineAdministered字段中具有“Flu”的行创建的FluSpecifics数据。 / p>

如果您需要更多信息,请与我们联系。 我不关心确切的语法,我可以为自己找到它(我正在使用Cache SQL)。我更愿意知道这样做的一般方法。 非常感谢您提前

2 个答案:

答案 0 :(得分:1)

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

UNION

SELECT 'Pheumonia' as VaccineAdministered
FROM table
WHERE PneumoniaSpecifics != '' 

答案 1 :(得分:-1)

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