2016-07-27 50 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