2010-06-29 82 views
4

基於下面的SELECT CASE我想在一個WHEN內顯示兩個單獨的列。這可能嗎?我可以根據SELECT CASE選擇多個列嗎?

下面的兩條註釋掉的行就像我想要的。我相信這是非常簡單的東西,我失蹤了。事實上,有一個語法錯誤。

select 
    person.FirstName, 
    person.LastName, 
    CASE 
     --WHEN substatus is not null then 'HasSubstatus', null 
     --else null, 'DoesNotHaveSubstatus' 
     WHEN substatus is not null then 'HasSubstatus' 
     else null 
    end 
from Person person 
+0

你爲什麼標記MySQL和SYBASE辦呢? – 2010-06-29 14:54:49

+0

我刪除了mysql標籤,對此有所瞭解。 – VoodooChild 2010-06-29 15:05:12

+0

是否有理由確實需要兩列,它們都傳達相同的確切數據?也許你的報表引擎有奇怪的需求或者其他的東西,但是這些事情之一會引發我的紅旗開始。 – 2010-06-29 15:06:51

回答

4

您不能在單個Case表達式中將其作爲Case表達式返回單個值。您必須使用兩個Case表達式。

Select person.FirstName 
    , person.LastName 
    , Case When substatus is not null Then 'HasSubstatus' End As [HasSubstatus] 
    , Case When substatus is null Then 'DoesNotHaveSubstatus' End As [DoesNotHaveSubstatus] 
From Person person 
1

你不能。

如果您的意思是您想要將相同的條件邏輯應用於2列或將其作爲單獨的查詢應用,則需要重複case語句,如果您的意思是在一種情況下應該返回兩列而另一列案例一列。

-1

您可以用if()isnull()這個語法將只工作在MySQL

select 
    person.FirstName, 
    person.LastName, 
    IF(ISNULL(substatus),'HasSubstatus', null) AS DoesHave, 
    IF(ISNULL(substatus),null,'DoesNotHaveSubstatus' ) AS DoesNotHave, 
from Person person 
+0

-1語法錯誤:數字錯誤參數功能'ISNULL' – VoodooChild 2010-06-29 15:30:27

+0

@VoodooChild,對不起使用mysql語法.. @thomas答案是要走的路.. – 2010-06-29 16:29:42

+0

哦,我不知道這會在MySQL中工作。我試圖刪除downvote,但它說投票被鎖定,除非答案被編輯。 – VoodooChild 2010-06-30 00:52:08

相關問題