Sql server 用例语句和QUOTENAME一起使用

Sql server 用例语句和QUOTENAME一起使用,sql-server,sql-server-2008,sql-server-2012,case,Sql Server,Sql Server 2008,Sql Server 2012,Case,我在使用SQL Server时面临一个SQL查询问题 我有一个类似这样的问题 SELECT QUOTENAME(A, '"'), QUOTENAME(B, '"'), QUOTENAME(C, '"') FROM TABLENAME 现在,我必须用一个案例陈述来代替这个 现在这个查询工作了- SELECT A, CASE WHEN B='Thank you' then 'TY' WHEN B='No Problem' then 'NP' WHEN B='As soon as possib

我在使用SQL Server时面临一个SQL查询问题

我有一个类似这样的问题

SELECT QUOTENAME(A, '"'),
 QUOTENAME(B, '"'),
 QUOTENAME(C, '"')

FROM TABLENAME
现在,我必须用一个案例陈述来代替这个

现在这个查询工作了-

SELECT A,
CASE
WHEN B='Thank you' then 'TY'
WHEN B='No Problem' then 'NP'
WHEN B='As soon as possible' then 'ASAP'
END AS B,
C
FROM TABLENAME

现在我使用QUOTENAME,因为我想用双引号将字段括起来。任何可能的情况下,我如何混合QUOTENAME和CASE语句。到目前为止,无论我尝试了什么,都会抛出一个语法错误。

应该就是这样工作的

SELECT A,
       CASE
         WHEN B='Thank you' then QUOTENAME('TY', '"')
         WHEN B='No Problem' then QUOTENAME('NP', '"')
         WHEN B='As soon as possible' then QUOTENAME('ASAP', '"')
       END AS B,
       C
FROM TABLENAME
或者更短

SELECT A,
       QUOTENAME( CASE
                    WHEN B='Thank you' then 'TY'
                    WHEN B='No Problem' then 'NP'
                    WHEN B='As soon as possible' then 'ASAP'
                  END, '"') AS B,
       C
FROM TABLENAME

与GuidoG解决方案相比,这可能也要短一点:

SELECT A
  , QUOTENAME(CASE B
                  WHEN 'Thank you' THEN 'TY'
                  WHEN 'No Problem' THEN 'NP'
                  WHEN 'As soon as possible' THEN 'ASAP'
              END, '"') AS B
  , C
FROM TABLENAME;

如果你总是比较一个列是否相等,你可以只写
CASE column\u NAME
,然后做这样的比较:
WHEN 1,然后'LOL1',WHEN 2,然后'LOL2',
等等。

只要使用
选择QUOTENAME(CASE WHEN…..WHEN…..END,“)作为B
谢谢@GuidoG。它工作得很好!现在当我看到你的查询时,我能理解我做错了什么。有时我真是太傻了。