SQL 替换所有值的子查询

SQL Subquery to replace all values

我有一个查询 returns 一堆不同的数据,但是我想让它在特定条件下替换所有值。

我在下面写的内容有点给了我想要的结果,但不是真的。它创建一个新列而不是替换另一列:

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 子查询,但这也没有用。

这可能吗?我可能遗漏了一些非常明显的东西。

非常感谢!

您可以在 CASE 表达式中使用 ELSE 来组合两者 "columns":

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

顺便说一句,您不需要使用 Sub-Select。这同样有效并且更易于阅读:

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