在SQLSERVER中重命名WHERE子句

时间:2017-09-13 11:59:45

标签: sql-server

我想重命名查询中“城市”列中显示的内容。这是我的数据:

Name, Age, City
David, 20, London
Harry, 22, London
Lenny, 17, Beijing
Sally, 28, Cairo
Filo, 53, Manchester
David, 40, London
David, 30, Manchester

我有以下查询:

SELECT Name, Age, City
FROM [dbo].[Contacts]
WHERE City LIKE 'London'
group by City

而不是'伦敦'出现在'城市'栏中,我希望'伦敦大卫'出现,如果'伦敦'出现在'城市'栏中,'大卫'出现在名称栏中。

我将如何在sqlserver中执行此操作?

4 个答案:

答案 0 :(得分:3)

如果您想使用'英国'作为where子句中的搜索过滤器,您可以使用CTE。

;WITH CteCity AS(
    SELECT Name, 
        Age, 
        CASE WHEN City IN ('London','Manchester') 
            THEN 'United Kingdom' 
            ELSE City END as City
    FROM [Contacts]
)
SELECT Name, Age, City  FROM CteCity
    WHERE City ='United Kingdom'

对于您编辑过的查询,请尝试

SELECT Name, 
        Age, 
        CASE WHEN City = 'London' 
            THEN City + ' ' + Name
            ELSE City END as City
    FROM [Contacts]

答案 1 :(得分:1)

CASE WHEN City in('London', 'Manchester') THEN 'United Kingdom' ELSE ... END as Column1  

答案 2 :(得分:1)

SELECT Name, Age, CASE WHEN City IN ('Manchester', 'London') THEN 'United Kingdom' ELSE City END AS City
  FROM [dbo].[Contacts]
  WHERE City ='London' OR City ='Manchester'
  GROUP BY Name, Age, CASE WHEN City IN ('Manchester', 'London') THEN 'United Kingdom' ELSE City END

答案 3 :(得分:1)

这完全符合您的描述,但我不知道这是否是您的意图:

SELECT Name, Age, 
Case 
  when City='London' and Name='David' then 'London David'
  else City
end 
as City
FROM [dbo].[Contacts]

(而不是'伦敦'出现在'城市'栏中,显示'伦敦大卫'IF'伦敦'出现在'城市'栏中,'大卫'出现在名称栏中。)

我认为你在混淆:

SELECT部分​​ - >显示受影响的每一行的内容。

WHERE部分 - >您的过滤条件,以确定哪些行受到影响。