在SQL显示中更改列名

在SQL显示中更改列名,sql,sql-server-2008,tsql,split,Sql,Sql Server 2008,Tsql,Split,这是我运行的无错误的现有代码: SELECT ItemId, CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+ SUBSTRING([Date],10,2)+':'+ SUBSTRING([Date],12,2)+':'+ SUBSTRING([Date],14,2)+'.'+ SUBSTRING([Date],15,3))) AS DATE) 'Da

这是我运行的无错误的现有代码:

    SELECT  ItemId,
   CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS DATE) 'Date',
    LEFT(CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS TIME),8) 'Time',
 [Object],
 SourceSite,
 DestSite
 FROM (  SELECT  ItemId,
 CONVERT(VARCHAR(18),[Date]) [Date],
 [Object],
 SourceSite,
 DestSite,
            UserCode
 FROM JnlMediumMove
 WHERE CAST(substring(convert(varchar(50), [Date]), 0, 5) + '-' +
 substring(convert(varchar(50), [Date]), 5, 2) + '-' +
 substring(convert(varchar(50), [Date]), 7, 2) AS DATETIME) =
CONVERT(date, DATEADD(day, -1, getdate()))) A --Converting to date again to remove     the time part
WHERE UserCode = 'Automation'
ORDER BY [Date] DESC;
但是,我需要对数据的显示进行一些更改。 1) 将列ItemId的名称更改为“ItemId” 2) 将列对象的名称更改为“媒体” 3) 将列SourcSite的名称更改为“源站点” 4) 将列DestSite的名称更改为“目标站点” 5) 在源站点和目标站点之间添加一列,称为“注释” 6) 该列中的每个条目都必须包含以下语句“已成功移动到”

请注意:我正在尝试每天运行一个有关这些报告的批处理作业。因此,列标题和更改必须在一个查询中完成。有人可以对我的代码进行任何更改以获得所需的输出吗?我们将不胜感激。我正在使用SQLServerManagementStudio 2008

SELECT ItemID AS [Item Id]
等等,等等?我想这就是你想要的(列名的别名)。其余的情况也会类似。对于“注释”列,
“已成功移动到”,因为[Comment]
应该可以正常工作

试试这个:

SELECT  ItemId AS [Item Id],
   CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS DATE) 'Date',
    LEFT(CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS TIME),8) 'Time',
 [Object] AS [Media],
 SourceSite AS [Source Site],
 'Was successfully moved to' AS [Comments],
 DestSite AS [Destination Site]
 FROM (  SELECT  ItemId,
 CONVERT(VARCHAR(18),[Date]) [Date],
 [Object],
 SourceSite,
 DestSite,
            UserCode
 FROM JnlMediumMove
 WHERE CAST(substring(convert(varchar(50), [Date]), 0, 5) + '-' +
 substring(convert(varchar(50), [Date]), 5, 2) + '-' +
 substring(convert(varchar(50), [Date]), 7, 2) AS DATETIME) =
CONVERT(date, DATEADD(day, -1, getdate()))) A --Converting to date again to remove     the time part
WHERE UserCode = 'Automation'
ORDER BY [Date] DESC;
等等,等等?我想这就是你想要的(列名的别名)。其余的情况也会类似。对于“注释”列,
“已成功移动到”,因为[Comment]
应该可以正常工作

试试这个:

SELECT  ItemId AS [Item Id],
   CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS DATE) 'Date',
    LEFT(CAST(DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))) AS TIME),8) 'Time',
 [Object] AS [Media],
 SourceSite AS [Source Site],
 'Was successfully moved to' AS [Comments],
 DestSite AS [Destination Site]
 FROM (  SELECT  ItemId,
 CONVERT(VARCHAR(18),[Date]) [Date],
 [Object],
 SourceSite,
 DestSite,
            UserCode
 FROM JnlMediumMove
 WHERE CAST(substring(convert(varchar(50), [Date]), 0, 5) + '-' +
 substring(convert(varchar(50), [Date]), 5, 2) + '-' +
 substring(convert(varchar(50), [Date]), 7, 2) AS DATETIME) =
CONVERT(date, DATEADD(day, -1, getdate()))) A --Converting to date again to remove     the time part
WHERE UserCode = 'Automation'
ORDER BY [Date] DESC;

在阅读了到目前为止的所有评论之后,问题似乎不是“如何向我的所有列添加列别名?”,而是“我如何知道我继承的查询中已经命名或没有命名的内容?”

让我试着提供一些背景信息。出于各种历史原因,SQL Server支持以下所有重命名列的方法

  • 名称=表达式
  • 表达式名称
  • 表达式
    AS
    name
  • “name”=表达式
  • 表达式“name”
  • 表达式
    “name”
  • “name”=表达式
  • 表达式“名称”
  • 表达式
    “名称”
  • [名称]=表达式
  • 表达式[名称]
  • 表达式
    [名称]
在过去,这些组合中有很多都是在您的查询中自由散布的。大概每个开发人员都应用了他/她自己的风格


我建议您检查每个列表达式,并系统地将它们转换为一个一致的语法。列表中的最后一个可能是最安全和最现代的。如果将列别名与文本编辑器中的特定制表位对齐,也会有所帮助。一旦你做到了这一点,应用你被要求做的列名应该是一件非常简单的事情。

在阅读了到目前为止的所有评论之后,问题似乎不是“如何向我所有的列添加列别名?”,而是“如何知道我继承的查询中已经命名或没有命名的内容?”

让我试着提供一些背景信息。出于各种历史原因,SQL Server支持以下所有重命名列的方法

  • 名称=表达式
  • 表达式名称
  • 表达式
    AS
    name
  • “name”=表达式
  • 表达式“name”
  • 表达式
    “name”
  • “name”=表达式
  • 表达式“名称”
  • 表达式
    “名称”
  • [名称]=表达式
  • 表达式[名称]
  • 表达式
    [名称]
在过去,这些组合中有很多都是在您的查询中自由散布的。大概每个开发人员都应用了他/她自己的风格



我建议您检查每个列表达式,并系统地将它们转换为一个一致的语法。列表中的最后一个可能是最安全和最现代的。如果将列别名与文本编辑器中的特定制表位对齐,也会有所帮助。一旦你做到了这一点,应用要求你做的列名应该是一件非常简单的事情。

你不知道哪一部分?您是想通过
alter
更改实际列名,还是只是为这条select语句的列名添加别名?是否尝试使用别名?试试这个,当我这样做时,我得到了这个错误:Msg 102,级别15,状态1,第1行“ID”附近的语法不正确。Msg 102,级别15,状态1,第25行“A”附近的语法不正确。我理解别名的概念,只是我从未将其应用于如此长的查询@rs@omarK,查询长度与别名无关,只需向要使用不同名称的列添加别名即可。我认为你懒得自己编辑查询和添加别名,还想让我们来做你的工作:)你不明白哪一部分?您是想通过
alter
更改实际列名,还是只是为这条select语句的列名添加别名?是否尝试使用别名?试试这个,当我这样做时,我得到了这个错误:Msg 102,级别15,状态1,第1行“ID”附近的语法不正确。Msg 102,级别15,状态1,第25行“A”附近的语法不正确。我理解别名的概念,只是我从未将其应用于如此长的查询@rs@omarK,查询长度与别名无关,只需向要使用不同名称的列添加别名即可。我认为您懒得自己编辑查询和添加别名,并希望我们完成您的工作:)我不确定我现有代码的语法会是什么样子,您是否可以将您的建议添加到我的代码中,以便我可以尝试运行它?感谢您……将db凭据发送给他,他将为您登录并完成您的工作。@Mike Cheel我试图应用项目ID别名,但它给了我以下错误:Msg 102,级别15,状态1,第1行“ID”附近的语法不正确。Msg 102,级别15,状态1,第25行“A”附近的语法不正确。您使用的是SQL Server吗?另外,您是否将项目Id像[Item Id]一样括在括号中?是的,我是,是的,我是@Mike CheelI。我不确定我现有代码的语法会是什么样子,您是否可以添加您的建议