当前位置:数据库 > DB2 >>

一条DB2或SQL SERVER 查询问题,有点难度

补充:目前数据库里查询出了多条记录,比如叫 Class表,以ID作为分组条件,每个记录都有一个时间entry_time,有一个中文描述字段summary,只可能为"首次"和"后续"两个枚举值,但是目前所有summary为空。 我想把所有class表里,每一个相同的id分组,作如下处理: 把每一个id里entry_time时间最小的,summary赋予"首次"的值;其余大于这个最小时间的summary字段赋予"后续"的值,不要改变数据库的值,直接用select查询出来。 简单说就是每个ID的查询,都是保证最小时间是“首次”的字样,其他都是“后续” 请问各位大侠如何处理?最好用DB2语句写出来,db2不行SQLSERVER也可以
答案:declare @t table(fa varchar(10)
,fb int)
insert into @t 
select 'a',1
union all select 'a',2
union all select 'b',2
union all select 'b',4
union all select 'b',5

select a.fa ,a.fb ,case when a.fb =b.fbMin then '首次' else '后续' end from @t a
left join (
select fa ,fbMin=MIN (fb) from @t
group by fa) b on a.fa =b.fa
其他:select 
     t1.id
/*利用左连接没有匹配上的记录为空来判断*/
   ,case when t2.min_entry_time is not null then "首次" else "后续" end as summary
 from Class t1
left join 
      /*查询每个id最小的时间*/
       (select id,min(entry_time) as min_entry_time from Class group by id) t2
on t1.id = t2.id and t1.entry_time = t2.entry_time



最后说一句,这种SQL还算好吧~

上一个:DB2里面export怎么用
下一个:DB2中 取当前系统日期减去表xxx.date 的sql语句怎么写

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,