我需要在2000年以前雇用的所有人放置旧计时器吗?我编写了代码,当我运行代码时,所有人都会使用旧计时器。我不希望它只是由2000年雇用的人才想要它。我无法弄清楚我正在做什么工作,因为我编写的代码是为了一个项目的价格这样做是昂贵的,它工作正常。但是按照约会的方式这样做,我似乎迷失了。这是我写的select语句,也许有人可以引导我走上正确的道路?
select employee_id,
hire_date,
'OLD TIMER' as message
from l_employees
where hire_date > 2000
union all
select employee_id,
hire_date,
' '
from l_employees
where not (hire_date >2000)
or hire_date is null
order by employee_id;
当我更改select语句时,我得到了我想要的结果,我需要它,但是当我使用雇用日期是日期/时间数据类型时,我需要这样做。
select employee_id,
credit_limit,
'OLD TIMER' as message
from l_employees
where credit_limit > 15.00
union all
select employee_id,
credit_limit,
' '
from l_employees
where not credit_limit > 15.00
or credit_limit is null
order by employee_id;
这是我从表格中得到的结果
employee_id credit_limit message
201 $30.00 OLD TIMER
202 $25.00 OLD TIMER
203 $25.00 OLD TIMER
204 $15.00
205 $25.00 OLD TIMER
206
207 $25.00 OLD TIMER
208 $25.00 OLD TIMER
209 $15.00
210 $25.00 OLD TIMER
211 $40.00 OLD TIMER
这是最顶层选择语句的输出
employee_id hire_date message
201 6/1/1998 OLD TIMER
202 8/16/1999 OLD TIMER
203 2/2/2009 OLD TIMER
204 7/1/2008 OLD TIMER
205 3/1/2006 OLD TIMER
206
207 12/1/2008 OLD TIMER
208 4/1/2008 OLD TIMER
209 3/17/1999 OLD TIMER
210 2/16/2007 OLD TIMER
211 2/3/2014 OLD TIMER
只是为了更新我发现了如何获得我正在寻找的结果感谢我对此问题的所有帮助。
答案 0 :(得分:2)
select employee_id,
hire_date,
switch(
year(hire_date) < 2000, 'OLD TIMER'
, true, 'Greenhorn'
)as message
from l_employees
答案 1 :(得分:0)
试试这个:
select employee_id,
hire_date,
'OLD TIMER' as message
from l_employees
where hire_date < 20000101
union all
select employee_id,
hire_date,
' '
from l_employees
where hire_date >= 20000101
or hire_date is null
order by employee_id;
这对我来说在测试台上有用。 在这里,我以YYYYMMDD的形式指定日期,而不仅仅是YYYY。