Sql 如何在用例中选择?

Sql 如何在用例中选择?,sql,sql-server,select,subquery,case,Sql,Sql Server,Select,Subquery,Case,我正在使用SQL Server。整个查询要长得多,我希望将重点放在需要修复的部分。我有一个类似这样的方法: SELECT a, b, ..., g, (SELECT p.name + ' (' + pd.class + ')' FROM person p INNER JOIN person_data pd ON p.personid = pd.personid AND pd.typeid = 1 WHERE p.personid = k.c

我正在使用SQL Server。整个查询要长得多,我希望将重点放在需要修复的部分。我有一个类似这样的方法:

SELECT 
    a, b, ..., g, 
    (SELECT p.name + ' (' + pd.class + ')' 
     FROM person p 
     INNER JOIN person_data pd ON p.personid = pd.personid AND pd.typeid = 1 
     WHERE p.personid = k.contactid) as Person
FROM 
    maindata md
INNER JOIN 
    ........
我想用
CASE
语句替换
pd.class

CASE (SELECT ....)
    WHEN 1 THEN ....
    WHEN 2 THEN ....
END
我在查询中使用了这样的
CASE
语句,但它们在原始
SELECT
中是分开的(参见a、b等)。如何将
案例
语句插入
选择
中的SELECT中

比如:

SELECT 
    a, b, ..., g, 
    (SELECT p.name + ' (' + 
        class = (CASE (SELECT .....)
            WHEN 1 THEN ....
            WHEN 2 THEN ....
        END)
     + ')' FROM person p 
    INNER JOIN person_data pd ON p.personid = pd.personid AND pd.typeid = 1 
    WHERE p.personid = k.contactid) as Person
FROM maindata md
INNER JOIN ........

你试过了吗?
+class=
是不合法的,但是
CASE(SELECT…
是完全合法的。
CASE
在t-SQL中不是一个语句-它是一个返回单个原子值的表达式(比如
a+b
)……我想如果你省略了“class=”谢谢你@jeroemostert和GuidoG),你的查询就会成功。这确实是问题所在。谢谢marc_s的澄清。