2013-03-05 99 views
1

我有一个问题,我不能弄明白,它应该是非常快,但我还没有看到任何像它一样。因此,这里是我的主要问题,我有一个定义了基于一个经理团队,所以它看起来像一个case语句:SQL Server案例陈述

"team" = case 
    when manager = 'manager1' then 'team1' 
    ... 
    when manager = 'managerN' then 'teamN' 
    else 'Other' 
end 

然后我想找到一种方法,使一个新的栏目“凸出”,使其除非项目团队是“其他”,所以我想它看起来像:

"proj" = case 
    when team = 'Other' then 'Other' 
    else project 
end 

,但我不断收到错误的语法不正确或它说,球队是不是一个有效的列。有任何想法吗?

+0

你能分享一个确切的错误吗? – 2013-03-05 22:25:38

+1

您不能在select子句中重用别名。仅在那之后。 – 2013-03-05 22:25:55

+0

列名称'team'无效。 – NateSHolland 2013-03-05 22:26:12

回答

2
Use Northwind 
GO 



select 

[Hemisphere] = case 
    when derived1.Continent = 'Europe' then 'Eastern' 
    when derived1.Continent = 'North America' then 'Western' 
    when derived1.Continent = 'South America' then 'Western' 
    else 'Other Hemisphere' 
end 
, derived1.Continent 
, derived1.Country 
from (

select c.Country , 
[Continent] = case 
    when c.Country = 'Germany' then 'Europe' 
    when c.Country = 'France' then 'Europe' 
    when c.Country = 'Sweden' then 'Europe' 
    when c.Country = 'Denmark' then 'Europe' 
    when c.Country = 'Finland' then 'Europe' 
    when c.Country = 'Switzerland' then 'Europe' 
    when c.Country = 'Poland' then 'Europe' 
    when c.Country = 'Norway' then 'Europe' 
    when c.Country = 'Ireland' then 'Europe' 
    when c.Country = 'Austria' then 'Europe' 
    when c.Country = 'Italy' then 'Europe' 
    when c.Country = 'Portugal' then 'Europe' 
    when c.Country = 'Belgium' then 'Europe' 
    when c.Country = 'Spain' then 'Europe' 
    when c.Country = 'UK' then 'Europe' 
    when c.Country = 'Spain' then 'Europe' 
    when c.Country = 'Mexico' then 'North America' 
    when c.Country = 'USA' then 'North America' 
    when c.Country = 'Canada' then 'North America' 
    when c.Country = 'Brazil' then 'South America' 
    when c.Country = 'Argentina' then 'South America' 
    when c.Country = 'Venezuela' then 'South America' 
    else 'Other Continent' 
end 

from [dbo].[Customers] c 
) as derived1 
+0

谢谢,这工作。 – NateSHolland 2013-03-05 22:35:23

+0

很高兴有帮助。您还有权“标记为答案”。 :O – granadaCoder 2013-03-05 22:36:20

+0

哈哈我知道,我正在等待时间限制用完。它告诉我,我必须等3分钟。 – NateSHolland 2013-03-05 22:42:01