1

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

    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 的名称更改为“项目 ID” 2) 将列对象的名称更改为“媒体” 3) 将 SourcSite 列的名称更改为“源站点” 4) 将 DestSite 列的名称更改为“目标站点” 5) 添加源站点和目标站点之间的列,称为“评论” 6) 该列中的每个条目都必须包含“已成功移动到”的声明</p>

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

4

2 回答 2

3

在阅读了到目前为止的所有评论之后,问题似乎不是“如何为我的所有列添加列别名?”,而是“我如何知道在我的查询的意大利面条混乱中已经命名或没有命名的内容?遗传?”

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

  • 名称=表达式
  • 表达式 名称
  • 表达式 AS 名称
  • '名称' =表达式
  • 表达式'名称'
  • 表达式 AS'名称'
  • 名称”=表达式
  • 表达名字
  • 表达 AS名字
  • [名称] =表达式
  • 表达式[名称]
  • 表达式 AS[名称]

过去,许多这些组合已自由地散布在您的查询中。大概每个从事过它的开发人员都应用了他/她自己的风格。

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

于 2013-06-24T20:24:54.390 回答
1
SELECT ItemID AS [Item Id]

等等等等等等?我认为这就是您所要求的(列名的别名)。其余的将是相似的。对于 Comments 列,'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;
于 2013-06-24T20:09:00.087 回答