在SQL Query中设置默认值

时间:2016-10-22 10:58:50

标签: sql oracle

假设有一个表

Emp_id  Name  Comments
1       Ana   Test
2       Dana  Test1
3       Fiona Test2

以下查询将从我的表中检索所有记录,现在我必须检索日期SysDate + 5个工作日(不包括星期六和星期日)以及不在表中

select emp_id,Name,Comments from Employees

预期的输出是

    Emp_id  Name    Comments   Date
    1       Ana     Test       28.10.2016
    2       Dana    Test1      28.10.2016
    3       Fiona   Test2      28.10.2016

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

如果SYSDATE是营业日,公式应该增加7天,但如果SYSDATE是星期日,则应该只添加5天,而当SYSDATE是星期六时,它应该只增加6天。这可以通过CASE表达式完成:

... SYSDATE + case to_char(SYSDATE, 'Dy') when 'Sun' then 5
                                          when 'Sat' then 6
                                          else            7 end as my_date...

(" Date"是Oracle中的保留字,不要将其用作列名。)

另一件事 - 如果你真的需要一个约会(并且不需要与"当前"时间相同的时间),你可能还想将整个表达包裹在{ {1}}所以你只得到日期,时间设置为trunc(....)

答案 1 :(得分:0)

 select emp_id,Name,Comments, 
           (SYSDATE + case to_char(SYSDATE, 'DY') 
            when 'Sun' then 5
            when 'Sat' then 6
            else 7 
            end) Date
            from Employees