Sql server 在SQLSERVER中重命名WHERE子句

Sql server 在SQLSERVER中重命名WHERE子句,sql-server,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 'L

我想重命名查询中“城市”列中出现的内容。以下是我的数据:

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中实现这一点

如果要在where子句中使用“英国”作为搜索筛选器,可以使用CTE

CASE WHEN City in('London', 'Manchester') THEN 'United Kingdom' ELSE ... END as Column1  
;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]

如果您想在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]

这正是您所描述的,尽管我不知道这是否是您的意图:

SELECT Name, Age, 
Case 
  when City='London' and Name='David' then 'London David'
  else City
end 
as City
FROM [dbo].[Contacts]
(如果“伦敦”出现在“城市”列中,而“大卫”出现在“姓名”列中,则显示“伦敦大卫”,而不是“城市”列中的“伦敦”

我想你是弄错了:

选择零件->显示受影响的每一行的内容


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

这正是您所描述的,尽管我不知道这是否是您的意图:

SELECT Name, Age, 
Case 
  when City='London' and Name='David' then 'London David'
  else City
end 
as City
FROM [dbo].[Contacts]
(如果“伦敦”出现在“城市”列中,而“大卫”出现在“姓名”列中,则显示“伦敦大卫”,而不是“城市”列中的“伦敦”

我想你是弄错了:

选择零件->显示受影响的每一行的内容



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

简单地说就是
选择名称、年龄、'United Kingdom'
?也许这是一个城市->国家表和联接的工作。但是在where子句中我应该在哪里插入'United Kingdom'?没有国家专栏,所以你不想按城市分组?您想按国家分组吗?该组是否按工作状态分组?我的问题稍微有点变化,因为我需要更改与其他两列相关的列条目。这可能吗?简单地说,只需选择姓名、年龄和“英国”?也许这是一个城市->国家表和联接的工作。但是在where子句中我应该在哪里插入'United Kingdom'?没有国家专栏,所以你不想按城市分组?您想按国家分组吗?该组是否按工作状态分组?我的问题稍微有点变化,因为我需要更改与其他两列相关的列条目。这可能吗?这适用于单个列条目,但如果我有两个呢?我已经改变了问题,使之更清楚,只需添加进一步的条件-例如:当city='London'和Name='David'时,那么。。。当…然后…当…然后…其他。。。end此语法将在SQL Server上失败。您在
选择
中有和未聚合的
名称
年龄
,但您没有将它们包括在
分组依据中
。Thx-我刚刚扩展了分组依据。
类似于
在这种上下文中有点混乱-实际上它在这个脚本中作为
=
用于单个列条目,但是如果我有两个呢?我已经改变了问题,使之更清楚,只需添加进一步的条件-例如:当city='London'和Name='David'时,那么。。。当…然后…当…然后…其他。。。end此语法将在SQL Server上失败。您在
选择
中有和未聚合的
名称
年龄
,但您没有将它们包含在
分组依据中。Thx-我刚刚扩展了分组依据。
类似于
在这种上下文中有点混乱-实际上它在这个脚本中的作用是
=