2017-03-07 85 views
0

有人可以請告知下面嗎?我有一些我想要使用的字段,並將它們組合在一列中獲取數據。我正在使用下面的案例陳述,但沒有得到我期望的結果。SQL中的案例陳述和ORP

CASE 
WHEN m.u_hearing = 1 THEN 'Hearing' 
WHEN m.u_learning_reading_diff = 1 THEN 'Learning or reading Difficulty' 
WHEN m.u_long_term_ill = 1 THEN 'Long Term Illness' 
WHEN m.u_mental_illness = 1 THEN 'Mental Illness' 
WHEN m.u_mobility = 1 THEN 'Mobility' 
WHEN m.u_physical_coordination = 1 THEN 'Physical Co-ordination' 
WHEN m.u_physical_dis = 1 THEN 'Physical Disability' 
WHEN m.u_red_physical_cap = 1 THEN 'Reduced_physical_capacity' 
WHEN m.u_speech = 1 THEN 'Speech' 
WHEN m.u_vision = 1 THEN 'Vision' 
WHEN m.u_other_dis = 1 THEN 'Other_Disability' 
WHEN (m.u_hearing = 1 AND (m.u_learning_reading_diff = 1 OR (m.u_speech = 1))) THEN 'Multiple' 

這是不給結果作爲是否有與有多個領域的話,我想多回來,我想最後的語句,但現在看來,這是撿尚屬首例。

+1

如果不是一組水平'm.u_SYMPTOM'領域你有一個'症狀(sympton_id,描述)通過一個一對多表鏈接'表,這將是一個簡單的'JOIN'。 –

回答

1

把「最困難」的條件首先

case WHEN m.u_hearing = 1 AND (m.u_learning_reading_diff = 1 OR m.u_speech = 1) THEN 'Multiple' 
    WHEN m.u_hearing = 1 THEN 'Hearing' ... 

因爲case停止在該是true

0

當使用CASE語句,他們將在您指定的順序運作的首要條件。

因此,如果m.u_Hearing = 1那麼它會停在第一行,並沒有達到底部。

這將適用於您所需的內容,但請按您喜歡的順序列出。

CASE 
WHEN (m.u_hearing = 1 AND (m.u_learning_reading_diff = 1 OR (m.u_speech = 1))) THEN 'Multiple' 
WHEN m.u_hearing = 1 THEN 'Hearing' 
WHEN m.u_learning_reading_diff = 1 THEN 'Learning or reading Difficulty' 
WHEN m.u_long_term_ill = 1 THEN 'Long Term Illness' 
WHEN m.u_mental_illness = 1 THEN 'Mental Illness' 
WHEN m.u_mobility = 1 THEN 'Mobility' 
WHEN m.u_physical_coordination = 1 THEN 'Physical Co-ordination' 
WHEN m.u_physical_dis = 1 THEN 'Physical Disability' 
WHEN m.u_red_physical_cap = 1 THEN 'Reduced_physical_capacity' 
WHEN m.u_speech = 1 THEN 'Speech' 
WHEN m.u_vision = 1 THEN 'Vision' 
WHEN m.u_other_dis = 1 THEN 'Other_Disability' 
+0

感謝您的回覆。 – Raehef

+0

我已將該查詢修改爲下方,並返回Multiple或None。我是否需要通過所有不同的選項來爲每個人和他們提供一種更簡單的方式。 – Raehef

+0

CASE \t WHEN(m.u_hearing = 1 OR m.u_learning_reading_diff = 1 OR m.u_long_term_ill = 1 OR m.u_mental_illness = 1 OR m.u_mobility = 1 \t \t OR m.u_physical_coordination = 1 OR m.u_physical_dis = 1 OR m.u_red_physical_cap = 1 OR m.u_speech = 1 \t \t OR m.u_vision = 1 OR m.u_other_dis = 1)THEN'Multiple' when m.u_hearing = 1 THEN'Hearing'....... .. – Raehef

0

據我所知,你不能在另一個「時,」像再次使用您的第一條語句的

WHEN m.u_hearing = 1 THEN 'Hearing' 

上述情況嘗試使用否則,如果它是在結束工作,可行的爲您服務。

Else 'Multiple'