如何在SQL中为特定值设置别名?

时间:2017-03-21 19:18:26

标签: sql sql-server database

我将提出一个关于'别名的问题'列中的值。我将使用一周中的几天作为直观示例来解决我的问题,但我 要求进行日期转换。

假设我有以下SQL脚本:

SELECT DaysOfWeek 
FROM [databasename].[dbo].[tablename]

现在,列DaysOfWeek将返回日期的字符串值'姓名,即"星期一," "星期二,"等等。

如果我希望查询返回'星期一',2'星期二'等等的整数1,该怎么办?我想在SELECT语句中为每周的每一天分配一个特定值,但我不确定如何去做。

我对SQL比较陌生,所以我只是想要一个直观的方法来执行这样的任务。

编辑添加:我只使用一周中的几天及其各自的整数表示作为简单示例;我的任务不涉及一周中的几天,而是员工代码编号和相应的标题。

4 个答案:

答案 0 :(得分:1)

如果要为另一个值定义自己的对应值,最好的方法是使用表,然后加入该表。

例如:

create table dbo.EmployeeTitle (
    id int not null identity(1,1) primary key
  , title varchar(32)
  );

create table dbo.Employee (
    id int not null identity(1,1) primary key
  , name nvarchar(128)
  , title_id int references dbo.EmployeeTitle(id)
  );

insert into dbo.EmployeeTitle values ('Big boss');
insert into dbo.Employee values ('daOnlyBG',1);

select e.*, et.title
from dbo.Employee e
  inner join dbo.EmployeeTitle et
    on e.title_id = et.id

rextester演示:http://rextester.com/FXIM78632

返回:

+----+----------+----------+----------+
| id |   name   | title_id |  title   |
+----+----------+----------+----------+
|  1 | daOnlyBG |        1 | Big boss |
+----+----------+----------+----------+

答案 1 :(得分:1)

您可以使用case

执行此操作
SELECT (CASE DaysOfWeek 
             WHEN 'Monday' THEN 1
             WHEN 'Tuesday' THEN 2
             . . .
        END)

在大多数情况下,没有必要像这样存储星期几。您可以随时使用函数datepart()datename()从日期/时间值中提取星期几。

如果列在表中,而不是日期的一部分,那么您可能希望将上述逻辑包含为计算列:

alter table t add DayOfWeekNumber as (case DaysOfWeek when 'Monday' then 1 . . .);

答案 2 :(得分:1)

使用CASE,here您有定义和一个示例:

select
    CASE 
          WHEN(DaysOfWeek="Monday") THEN 1
          WHEN(DaysOfWeek="Thusday") THEN 2
          ....
    ELSE  -1 
from table

希望这有帮助!

答案 3 :(得分:0)

我能想到的最简单的方法是拥有一个表变量或CTE;将查找创建为行并加入其中。像这样:

with cte as (
  select 1 as emp_code, 'value1' as emp_title
  union
  select 2 as emp_code, 'value2' as emp_title
  union
  select 3 as emp_code, 'value3' as emp_title
)

select cte.emp_code, tableName.*
from tableName
inner join cte
on cte.emp_title = tableName.some_column