2017-01-24 31 views
2

如果我有SQL查询:保留列名,当您转换()在SQL

select 
    project.Employee, 
    project.HoursQuantity, 
    convert(varchar(10), project.EntryDate, 120) 
from db.Project as project 

它将返回ProjectHours和HoursQuantity用正确的列名,但将返回EntryDate为(没有列名) 。

我该如何解决这个问题或重命名该列,以便将标题显示在返回给用户的表格中?

我认为数据会保留在同一列,但我想它移动到一个新的列。我尝试别名和其他一些东西,但它没有奏效。

+1

'convert(varchar(10),project.EntryDate,120)EntryDate' –

+0

'..db.Project as project''别名'应该是简短的,简单的和可读的,而不是没有用的确切表名。 –

+2

@Prdp在不是确切表名的区分大小写的系统中。 :) –

回答

8

具有相同名称给它一个alias

select 
    project.Employee, 
    project.HoursQuantity, 
    convert(varchar(10), project.EntryDate, 120) as EntryDate 
from db.Project as project 
+0

你有没有看到这个'db.Project as project';) –

+0

我只是把它作为一个例子。这不是我正在使用的实际代码/别名。我使用dbo.Project作为p,如果这让你感觉更好:P –

0

我给列混叠优选的方法是alias = expression

Bad Habits to Kick : Using AS instead of = for column aliases - Aaron Bertrand - 2012-01-23

select 
    project.Employee, 
    project.HoursQuantity, 
    EntryDate = convert(varchar(10), project.EntryDate, 120) 
from db.Project as project 

有效列别名方法:

select 1 as x; -- #1 
select x = 1;  -- #2 
select 'x' = 1 ; -- #3 
select [x] = 1 ; -- #4 
select 1 x;  -- #5 
select 1 as 'x'; -- #6 
select 1 'x';  -- #7 
select 1 as [x]; -- #8 
select 1 [x];  -- #9 
+1

为什么使用AS不好?我认为这是标准惯例。 –

+0

你看过这篇文章吗? – SqlZim