我的问题是获取ABC的最大和最小日期。我必须为大约20万条记录执行此操作,这需要更多时间。如何提高绩效
ROW_ID DATE C value
----------------------------------------------
1 2012-08-01 00:00:00.0 ABC 87
2 2012-09-01 00:00:00.0 ABC 87
3 2012-10-01 00:00:00.0 ABC 87
4 2012-11-01 00:00:00.0 ABC 87
5 2012-12-01 00:00:00.0 ABC 87
6 2013-01-01 00:00:00.0 CBA 87
7 2013-02-01 00:00:00.0 ABC 87
8 2013-03-01 00:00:00.0 ABC 87
答案 0 :(得分:2)
您应该可以使用以下内容轻松完成此操作:
select c,
min(date) min_date,
max(date) max_date
from yt
where c='ABC'
group by c;
编辑,因为您尝试使用此数据更新Sybase中的另一个表,您有几个选项。 Sybase不允许在UPDATE语句中使用派生表,因此我建议使用临时表来获取每个c的最小/最大日期,然后在UPDATE中使用此表并加入:
select c,
min(date) min_date,
max(date) max_date
into #temp2
from yt
where c='ABC'
group by c;
update t
set t.min_date = t1.min_date,
t.max_date = t1.max_date
from temp t
inner join #temp2 t1
on t.c = t1.c;