在SQL显示中更改列名称

时间:2013-06-24 20:06:31

标签: 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) '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)将Column ItemId的名称更改为“Item ID” 2)将列对象的名称更改为“Media” 3)将列SourcSite的名称更改为“源站点” 4)将列DestSite的名称更改为“目标站点” 5)在源站点和目标站点之间添加一个名为“注释”的列 6)该列中的每个条目必须包含此声明“已成功移至”

请注意:我正在尝试每天针对这些报告运行批处理作业。因此,列标题和更改必须全部在一个查询中进行。任何人都可以对我的代码进行任何更改以获得所需的输出吗?非常感谢。我正在使用SQL Server Management Studio 2008。

2 个答案:

答案 0 :(得分:3)

到目前为止阅读完所有评论之后,问题似乎不是“如何在我的所有列中添加列别名?”,但是“我怎么知道在意大利面的混乱中已经命名了什么?查询我继承了吗?“

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

  • name = expression
  • 表达 名称
  • 表达 AS 名称
  • ' name '= expression
  • 表达'名称'
  • 表达 AS'名称'
  • name ”= expression
  • 表达名称
  • 表达 AS名称
  • [ name ] = 表达
  • 表达 [名称]
  • 表达 AS [名称]

过去,您的查询中有很多这样的组合。据推测,每个开发过它的开发人员都应用了他/她自己的风格。

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

答案 1 :(得分:1)

SELECT ItemID AS [Item Id]

等等等?我认为这就是你要求的(列名的别名)。其余的都是类似的。对于“注释”列,'Was successfully moved to' AS [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;