2016-09-16 45 views
-1

我有我要转换为字符串取决于它的价值即显示字符串JOIN语句

select语句我想沿着线的东西:

SELECT SchoolID (IF SchoolID = 1 Convert STRING("London"), IF SchoolID = 2 Convert STRING ("Glasglow") ELSE Convert STRING(new school")), 
L.Location 
FROM Schools SC 
Join Location L 
On L.LocationID = SC.LocationID 
Where SchoolID < 200 

不知道如何解决这个问题。

非常感谢, 山姆

- 编辑括号内是我应该看不实际的代码的语法

+0

标记您正在使用的dbms。 (看起来像一些非ANSI SQL。) – jarlh

+0

为什么表达式是?你没有将学校编号和他们的城市存储在桌子上吗? – jarlh

+1

看起来像案例,但你最好显示样本数据和预期的结果。 – Serg

回答

1

可以使用CASE表达这样的:

SELECT SchoolID 
, case SchoolID 
    when 1 then 'London' 
    when 2 then 'Glasglow' 
    else  'new school' 
    end as SchoolName 
, L.Location 
FROM Schools SC 
Join Location L 
On L.LocationID = SC.LocationID 
Where SchoolID < 200 
+0

谢谢Kobi,我知道这很简单! – SCramphorn

1
SELECT SchoolID, CASE SchoolID 
WHEN 1 THEN 'London' 
WHEN 2 THEN 'Glasglow' 
ELSE 'new school' 
END AS New_Value , 
L.Location 
FROM Schools SC 
Join Location L 
On L.LocationID = SC.LocationID 
Where SchoolID < 200 
1

案例语句也可以写成这样:

SELECT SchoolID, 
     CASE WHEN SchoolID = 1 THEN 'London' 
     WHEN SchoolID = 2 THEN 'Glasglow' 
     ELSE 'new school' 
     END AS city , 
     L.Location 
FROM Schools SC 
JOIN LOCATIONL ON L.LocationID = SC.LocationID 
WHERE SchoolID < 200 
+0

至少略好一点的缩进。 – jarlh

+0

@Suraz如果你阅读我的评论,你可以看到我说的“案例陈述也可以这样写:”强调“也”。例如。 '案例当学校ID = 1那么'伦敦''而不是'CASE SchoolID 那么当时'伦敦'。感谢您为新来者提供支持。 – VDK

+0

@Suraz我不同意这个事实,你说这不是任何人的支持。我的理解是,这个网站的设立是为了帮助人们提出的问题,回答的问题或给出的备选答案。这对你来说可能是一个简单的问题,但对于要求的用户来说不是,因此他们需要帮助。不要以为每个人都和你一样。如果您遇到问题或不同意某事,请咨询其他人,不要去看他们。此外,你自相矛盾,最初说我的答案是“重复答案”,然后现在说这是“类似的答案......”。 – VDK