在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支持以下所有重命名列的方法
- 名称=表达式
- 表达式名称
- 表达式
nameAS
- “name”=表达式
- 表达式“name”
- 表达式
“name”为
- “name”=表达式
- 表达式“名称”
- 表达式
“名称”为
- [名称]=表达式
- 表达式[名称]
- 表达式
[名称]为
我建议您检查每个列表达式,并系统地将它们转换为一个一致的语法。列表中的最后一个可能是最安全和最现代的。如果将列别名与文本编辑器中的特定制表位对齐,也会有所帮助。一旦你做到了这一点,应用你被要求做的列名应该是一件非常简单的事情。在阅读了到目前为止的所有评论之后,问题似乎不是“如何向我所有的列添加列别名?”,而是“如何知道我继承的查询中已经命名或没有命名的内容?” 让我试着提供一些背景信息。出于各种历史原因,SQL Server支持以下所有重命名列的方法
- 名称=表达式
- 表达式名称
- 表达式
nameAS
- “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。我不确定我现有代码的语法会是什么样子,您是否可以添加您的建议