2012-12-13 127 views
3

我可以重寫列中的值,以便如果案例爲true,它會告訴值x等於查詢中的另一個動態值。這是僞代碼。我知道這是行不通的。我可以在選擇CASE SQL中覆蓋列的值嗎

Select jobTitle, managerTitle, bigBossTitle, 
    CASE WHEN jobtitle like '%DEVELOP%' THEN managerTitle = bigBossTitle 
    END 
From PeopleTable 
inner join... other tables... 

謝謝。

回答

3

試試這個:

Select  
    jobTitle, 
     CASE WHEN jobtitle like '%DEVELOP%' 
     THEN bigBossTitle 
     ELSE managerTitle 
     END as managerTitle, 
    bigBossTitle, 

From PeopleTable 
inner join... other tables... 

你只要把case語句,其中managerTitle柱,然後別名結果作爲managerTitle。這個邏輯有效地爲你提供了你正在尋找的東西。要實際「替換」一個值,你需要做更先進的T-SQL,而這並不是必須的。

在聯接謂詞使用case語句的例子:

... 
inner join otherTable 
on otherTable.bossTitle = 
     CASE WHEN jobtitle like '%DEVELOP%' 
     THEN bigBossTitle 
     ELSE managerTitle 
     END 
+0

乾杯。我現在放棄了。 – Sean

+0

我非常親密的伴侶。在一個很長的查詢結束時,我有內連接,我現在需要將新的值managerTitle加入到另一個表中。 table2上的內連接table2 = managerTitle。那可能嗎? – Sean

+0

@肖恩:是的,這是可能的。以最簡單的形式在連接謂詞/子句中使用case語句,但刪除別名'managerTitle') –

0

嘗試類似的東西:

Select jobTitle, managerTitle, bigBossTitle, IF(jobtitle like '%DEVELOP%', bigBossTitle, OTHER_VALUE_IF_FALSE) AS managerTitle 
From PeopleTable 
inner join... other tables... 
1

試試這個:

Select jobTitle, 
    CASE 
     WHEN jobtitle like '%DEVELOP%' 
     THEN bigBossTitle 
     ELSE managerTitle 
    END as managerTitle, 
    bigBossTitle 
From PeopleTable 
inner join... other tables... 
1

你是非常接近的。您的CASE會是這樣的:

Select jobTitle, bigBossTitle, 
    CASE 
      WHEN jobtitle like '%DEVELOP%' 
      THEN bigBossTitle 
      ELSE managerTitle 
    END as managerTitle 
From PeopleTable 
inner join... other tables... 
相關問題