select语句中能否用if语句,高分求解以下问题,多谢大虾们!

shitalone 2002-08-19 12:28:02
老板要统计本周人员出差在外的总天数和每人在某地的出差天数。并将最终结果导入EXCEL表格中,而出差系统是基于web的。因此考虑,写一个数据库查询算了,每周执行查询一次,将结果存为Excel就行了。(数据库为access)

因此,要求用一句SQL语句实现如下功能:

分如下几种情况:
1.以前出去(非本周),尚未归来 则为7天
2.以前出去,本周归来 则归来时间 - 上周六时间 即为本周在外时间
3.本周出去,尚未回来 则为本周六时间 - 出差时间
4.本周出差,本周归来 归来时间 - 出差时间

如果用一个字段表示查询出的某人本周在外的出差天数,如上所示,则有四种情况,请问SQL语句中能否用if条件,以对上面四种情况进行区分,求出所需的值填入天数字段。

...全文
278 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shitalone 2002-08-20
  • 打赏
  • 举报
回复
into_the_sky:

你的方法很管用,我已经实现一大半。不过还有个小问题,就是我的表中并未用到出差天数这一字段,能否不需要该字段来实现。
kikiok 2002-08-20
  • 打赏
  • 举报
回复
完整写法:
select case
when when city ='郑州' then 'zz'
when when city ='郑州2' then 'zz2'
when when city ='郑州3' then 'zz3'
end as city
from table
kikiok 2002-08-20
  • 打赏
  • 举报
回复
case 后面有column name ,或者 when 后面需要有column name,
比如:
case city when when '郑州' then 'zz'
或者
case when when city ='郑州' then 'zz'


shitalone 2002-08-20
  • 打赏
  • 举报
回复
在SQL Server 2000下,
我刚才试了select ....case的用法,不知为何不行,还请大虾指点!
我用select 目的地 from 出差信息表 where 目的地='郑州'可以查到25条信息。
而我用
select 目的地 case
when '郑州' then 'zz'
end case 目的地缩写
from 出差信息表
却查到的记录条数为所有数据记录,而且目的地缩写字段值全部为空。
shitalone 2002-08-20
  • 打赏
  • 举报
回复
多谢!能否给出select.....case...的详细语法。
或推荐几本sql server的好书。

mmzxg 2002-08-19
  • 打赏
  • 举报
回复
你可以使用CASE来查询,呵呵,就象楼上那样写!
tanghuan 2002-08-19
  • 打赏
  • 举报
回复


select 本周人员,case when 以前出去(非本周),尚未归来
then 7
when 以前出去,本周归来
then 则归来时间 - 上周六时间
when 本周出去,尚未回来
then 则为本周六时间 - 出差时间
else 归来时间 - 出差时间
end as 出差天数
from 出差记录表
into_the_sky 2002-08-19
  • 打赏
  • 举报
回复
maybe test these codes:
/*****/
declare @temp varchar(30)
declare time_judge cursor for
select 出差情况,出差天数 from table
for update of 出差天数
open time_judge
...
fetch next from time_judge
into @temp
if (@@fetch_status=0)begin
if (@temp='出差情况一')
update table set 出差天数 = 7
end
else if(@temp =(or like)出差情况二) begin
update table
set 出差天数=....
....
end
end
--close time_judge
--deallocate time_judge

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧