Sql server 根据值重命名列名

Sql server 根据值重命名列名,sql-server,Sql Server,我需要根据我在其中给出的值重命名柱基 SELECT TOP 1 [Pratice_Id] = [OID]// id , [Province] = '' //province , [Country] = 'US'// country FROM [tbl_Office] 如果国家与我们相等,我想将columnName[省]改为State我强烈建议使用一个列State\u Province,但是,如果您必须并且您不反对临时表,可能是这样的 示例 Select Top 1 *

我需要根据我在其中给出的值重命名柱基

SELECT TOP 1  
  [Pratice_Id] = [OID]// id
  , [Province] = '' //province
  , [Country] = 'US'// country   
FROM [tbl_Office]

如果国家与我们相等,我想将columnName[省]改为State

我强烈建议使用一个列
State\u Province
,但是,如果您必须并且您不反对临时表,可能是这样的

示例

Select Top 1 *
 Into  #Temp
 From  YourTable
 Where ...
 Order By ...

If ( Select Top 1 Country From #Temp  ) = 'US'
    Select [Pratice_Id]
          ,[State]  = [Province]
          ,[Country]
     From  #Temp
Else
    Select * from #Temp
返回

Pratice_Id  State   Country
1           RI       US
就我个人而言,我将提供这两种服务

Declare @YourTable table ([Pratice_Id] int,[Province] varchar(50),[Country] varchar(50))
Insert Into @YourTable values
 (1,'RI','US')
,(2,'Alberta','Canada')

Select [Pratice_Id]
      ,[State]      = case when [Country]='US' then Province else '' end
      ,[Province]   = case when [Country]<>'US' then Province else '' end
      ,[Country]
 From  @YourTable

你能解释一下你为什么关心列名是什么吗?当然你的客户端应用程序可以调整标签以适应?你不能更改列名,但你可以添加一个带有大小写表达式的列以返回标签。或者你可以添加2列,1个省,1个州,然后你的客户端应用程序选择正确的一列。对我来说,这听起来像是一个错误。你想解决的实际问题是什么。
Pratice_Id  State   Province    Country
1            RI                 US
2                   Alberta     Canada