2016-07-27 139 views
0

我有一個查詢返回一堆不同的數據,但是我想讓它在特定條件下替換所有的值。SQL子查詢替換所有值

我在下面寫的那種給了我想要的結果,但不是真的。它創造的,而不是更換另外一個新的列:

SELECT 
    CASE 
     WHEN T4.[U_DestType] = '6' 
      THEN (SELECT 
       'Company Limited' AS [ShipToCode] 
      ) 
    END AS [ShipToCode], 
    T2.[ShipToCode], 
    T6.[StreetS], 
    T6.[StreetNoS], 
    T6.[CityS], 
    T6.[ZipCodeS], 
    T6.[CountryS], 
    T5.[LicTradNum], 
    T2.[CardCode], 
    T4.[Phone1], 
    T4.[E_Mail], 
    T4.[U_DestType], 
    CASE 
     WHEN T4.[Country] = 'GB' 
      THEN 'EN' 
     ELSE T4.[Country] 
    END AS [Country], 
    T4.[U_ShortName] 
FROM[...] 

的最終目標是與一些預設值,而不是僅僅ShipToCode如上更換所有列。

我試圖在FROM之後放置一個EXIST子查詢,但那也不起作用。

這可能嗎?我可能錯過了一些非常明顯的東西。

非常感謝!

回答

4

您可以使用ELSE在你的情況表達了兩個「列」相結合:

CASE 
    WHEN T4.[U_DestType] = '6' 
     THEN (SELECT 
      'Company Limited' AS [ShipToCode] 
     ) 
    ELSE T2.[ShipToCode] 
END AS [ShipToCode], 

順便說一下,你並不需要使用子選擇。這將工作,以及更容易閱讀:

CASE 
    WHEN T4.[U_DestType] = '6' THEN 'Company Limited' 
    ELSE T2.[ShipToCode] 
END AS [ShipToCode], 
+0

提示,不需要那subselect,只是簡單的'...那麼'有限公司'......' –

+1

哈!正在編輯...; ) –

+0

我是個虛擬人物,現在看起來都很明顯。再次感謝。 – coblenski