日期:2014-05-18 浏览次数:20729 次
update a set a.j_id = b.j_id from tb a join (select j_name,j_dt,min(j_id) as j_id from tb group by j_name,j_dt)b on a.j_name = b.j_name and a.j_dt = b.j_dt
------解决方案--------------------
#define OPTTIMES 8
double
polyh2(double a[], double x, unsigned long degree) {
double result1 = 0.0, result2 = 0.0, result3 = 0.0, result4 = 0.0, xpwr = x;
double *end = &(a[degree - OPTTIMES + 1]);
if(degree < OPTTIMES) {
result1 = *a++;
end = &(a[degree - 1]);
while(a<= end) {
result1 += *a++ * xpwr;
xpwr *= x;
}
return result1;
}
result1 = *a++;
result2 = *a++ * xpwr; xpwr *= x;
result3 = *a++ * xpwr; xpwr *= x;
result4 = *a++ * xpwr; xpwr *= x;
while(a < end) {
result1 = result1 + *a++ * xpwr;
xpwr *= x;
result2 = result2 + *a++ * xpwr;
xpwr *= x;
result3 = result3 + *a++ * xpwr;
xpwr *= x;
result4 = result4 + *a++ * xpwr;
xpwr *= x;
result1 = result1 + *a++ * xpwr;
xpwr *= x;
result2 = result2 + *a++ * xpwr;
xpwr *= x;
result3 = result3 + *a++ * xpwr;
xpwr *= x;
result4 = result4 + *a++ * xpwr;
xpwr *= x;
}
result1 = result1 + result2 + result3 + result4;
end = &(a[degree - 1]);
while(a <= end) {
result1 += *a++ * xpwr;
xpwr = xpwr * x;
}
return result1;
}
------解决方案--------------------
create table #test(key_id nvarchar(36),j_name nvarchar(36),j_dt datetime,j_id nvarchar(36)) insert into #test(key_id,j_name,j_dt) select newid(), 'jack','2011-11-11' union all select newid(), 'jack','2011-11-11' union all select newid(), 'jack','2011-11-11' union all select newid(), 'jack','2011-11-11' union all select newid(), 'jack','2011-11-11' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack1','2011-11-12' union all select newid(), 'jack2','2011-11-11' union all select newid(), 'jack2','2011-11-11' union all select newid(), 'jack2','2011-11-11' union all select newid(), 'jack2','2011-11-11' union all select newid(), 'jack2','2011-11-11' union all select newid(), 'jack2','2011-11-11' go --取每组的第一条的key_id进行j_id的更新 update t1 set j_id=t2.key_id from #test t1 cross apply (select top 1 * from #test where j_name=t1.j_name and j_dt=t1.j_dt) t2
------解决方案--------------------