如何根据不同的情况返回,不同的标志值

xuanzg 2004-08-10 11:02:55
由下面表 a, 字段:id(主键) ,time

给出固定 id1 = 1, 和time1 = "2004-8-9"
如何取得下面的效果

标志 flag

如果存在该纪录 并且 time 大于time1, flag = 1
如果存在该纪录 并且 time 小于time1, flag = 2
如果不存在该纪录, flag = 3
...全文
131 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-08-15
  • 打赏
  • 举报
回复

declare @id1 int,@dt datetime
select @id1=1,@dt='2004-8-9'

select flag=case
when exists(select 1 from 表 where id1=@id1 and time>@dt)
then 1
when exists(select 1 from 表 where id1=@id1 and time<@dt)
then 2
else 3 end
General521 2004-08-15
  • 打赏
  • 举报
回复
你的表中有三个字段,[id],[time],flag
用这个思路:
select [id],[time],flag=
case
when [time]>'2004-08-09' then flag=1
when [time]<'2004-08-09' then flag=2
else
flag=3
end
不知行不,但思路是对的,你参考一下吧.
老宛 2004-08-10
  • 打赏
  • 举报
回复
--是不是这样的,你的id是唯一的吗?

declare @flag int,@time datetime
select @time=[time] from a where [id]=1 --and datediff(day,[time],'2004-8-9')=0
if @@rowcount=0
set @flag=3
else
begin
if @time>'2004-8-9'
set @flag=1
if @time<'2004-8-9'
set @flag=2
end

shijizhi 2004-08-10
  • 打赏
  • 举报
回复
你是要实现什么目的?
如果是要显示在数据窗口,加一个计算字段;
如果是用SQL查询,使用CASE语句或使用存储过程;
如果是写函数,使用IF...ELSE
xuanzg 2004-08-10
  • 打赏
  • 举报
回复
up

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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