2012-10-10 24 views
0

對於令人困惑的標題,我感到抱歉,我不知道如何將我想要做的事情放在文字中。無論如何,我需要評估兩欄流感和肺炎。計算的列將評估該行是否包含兩列「流感」和「肺炎」中的值,如果該行的「流感列」包含任何內容,並且該行的「肺炎」列包含任何內容,則返回「肺炎」。在SQL如下:SQL評估兩列並創建兩行(可能)

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

但是你可以看到,如果一個行包含兩列的信息,我的查詢將只關心在FluSpecifics列值,因爲它的代碼是第一位的。爲了進一步說明表格是否如下所示:

FluSpecifics   PneumoniaSpecifics 
successful vaccine  successful vaccine 

計算列VaccineAdministered將返回Flu。 如果兩者都存在,我需要此列來返回兩者。所以我需要它創建另一行,如果兩列都包含信息。我怎樣才能做到這一點? 此外,我需要將兩列都編譯成一列,稱爲肺炎特異性數據對應於在VaccineAdministered字段中創建的具有「肺炎」的行,以及對應於在VaccineAdministered字段中創建的具有「流感」的行的FluSpecifics數據。

如果您需要更多信息,請告訴我。 我不關心確切的語法,我可以爲自己找到(我正在使用緩存SQL)。我寧願知道這樣做的一般方法。 非常感謝你提前

+0

你可以發佈一些示例數據和預期的結果?或者使用工作數據模型創建[sql小提琴](http://sqlfiddle.com/)? – Taryn

回答

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

UNION 

SELECT 'Pheumonia' as VaccineAdministered 
FROM table 
WHERE PneumoniaSpecifics != '' 
-1
CASE 
WHEN FluSpecifics != '' AND PneumoniaSpecifics != '' THEN 'Flu and Pneumonia' 
WHEN FluSpecifics != '' THEN 'Flu' 
WHEN PneumoniaSpecifics != '' THEN 'Pneumonia' 
END as VaccineAdministered