2011-08-26 26 views
0

我想从case参数返回一个值到别名中。我已经试过各种内涵围绕以下如何将CASE表达式的值返回到ALIAS

CASE dbo.sch_group.group_code WHEN 'ERDS' THEN '1' AS alias_name 

,但我得到了别名

+1

也行在你的接受和投票:6答案,没有投票,不接受。 – gbn

回答

2

missing an END (CASE on MSDN)。这是一个“简单CASE表达式”

CASE dbo.sch_group.group_code 
    WHEN 'ERDS' THEN '1' 
END AS alias_name 

如果你有更多的条件,那么这将是这个

CASE dbo.sch_group.group_code 
    WHEN 'ERDS' THEN '1' 
    WHEN 'abcd' THEN '2' 
    ELSE <something> 
END AS alias_name 

我也认为这是在SELECT或这样

SELECT 
    col1, col2, 
    CASE dbo.sch_group.group_code 
     WHEN 'ERDS' THEN '1' 
     WHEN 'abcd' THEN '2' 
     ELSE <something> 
    END AS alias_name 
FROM 
    dbo.sch_group 
WHERE 
    ... 
+0

我在'dbo'附近再次得到了不正确的语法,上面的修复仍然有效。谢谢 – giles

+0

@giles:'CASE ..END别名“与'alias = CASE..END'相同。 dbo但是无关,除非1.你没有给出完整的信息2.你没有按照我们所说的去做 – gbn

+0

不是它的一个小窍门,它有点太大而不能在这里发布。你的建议现在与以下工作,作为即时试图建立一个子查询:CASE dbo.sch_group.group_code当'ERDS'THEN'1'结束作为别名, – giles

0

这是ORACLE,所以我不知道这是否会在SQL Server的工作,但不久的不正确的语法警告:

(CASE WHEN dbo.sch_group.group_code = 'ERDS' 然后 '1' END)AS ALIAS_NAME

+0

我在'dbo'附近收到了不正确的语法(但感谢评论) – giles

+0

这个怎么样? (CASE dbo.sch_group.group_code当'ERDS'THEN'1'END)别名 – phil

+0

仍然相同:-( – giles