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