我想重命名查询中“城市”列中显示的内容。这是我的数据:
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中执行此操作?
答案 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部分 - >您的过滤条件,以确定哪些行受到影响。