我要从两个表选出表一一列中相同值对应表二中多行时的最小值,并以表一这一列来group by,
我的语句:select * from (
select LTRIM(a.呼叫资源释放时激活集1小区标识)+''+LTRIM(a.呼叫资源释放时激活集1扇区标识)+'0' 掉话小区,b.PN PN1,
LTRIM(a.呼叫资源释放时激活集2小区标识)+''+LTRIM(a.呼叫资源释放时激活集2扇区标识)+'0' 掉话前小区2,c.PN PN2,
LTRIM(a.呼叫资源释放时激活集3小区标识)+''+LTRIM(a.呼叫资源释放时激活集3扇区标识)+'0' 掉话前小区3,
square(b.LON-c.LON)+square(b.LAT-c.LAT) PN1和2距离,
square(c.LON-d.LON)+square(c.LAT-d.LAT) PN2和3距离,
square(c.LON-d.LON)+square(c.LAT-d.LAT) PN1和3距离,
case when 
b.PN=e.PN then MIN(square(e.LON-c.LON)+square(e.LAT-c.LAT)) end 同PN1与PN2最近距离,
case when 
b.PN=e.PN then MIN(square(e.LON-d.LON)+square(e.LAT-d.LAT)) end 同PN1与PN3最近距离,
case when 
c.PN=e.PN then MIN(square(e.LON-b.LON)+square(e.LAT-b.LAT)) end 同PN2与PN1最近距离,
case when 
c.PN=e.PN then MIN(square(e.LON-d.LON)+square(e.LAT-d.LAT)) end 同PN2与PN3最近距离,
case when 
d.PN=e.PN then MIN(square(e.LON-b.LON)+square(e.LAT-b.LAT)) end 同PN3与PN1最近距离,
case when 
d.PN=e.PN then MIN(square(e.LON-c.LON)+square(e.LAT-c.LAT)) end 同PN3与PN2最近距离
from 
[1X语音_重庆_20101104] a inner join (select distinct*from map_data) b 
on(a.呼叫资源释放时激活集1小区标识=b.bid and a.呼叫资源释放时激活集1扇区标识=b.SectorID 
and a.指配频点=b.FREQ)
inner join (select distinct*from map_data) c 
on(a.呼叫资源释放时激活集2小区标识=b.bid and a.呼叫资源释放时激活集2扇区标识=b.SectorID 
and a.指配频点=b.FREQ)
inner join (select distinct*from map_data) d 
on(a.呼叫资源释放时激活集3小区标识=b.bid and a.呼叫资源释放时激活集3扇区标识=b.SectorID 
and a.指配频点=b.FREQ),map_data e
where 呼叫释放原因值 in (3077,3076) and 最终的业务选项=3
group by square(b.LON-c.LON)+square(b.LAT-c.LAT),square(c.LON-d.LON)+square(c.LAT-d.LAT),
square(c.LON-d.LON)+square(c.LAT-d.LAT),LTRIM(a.呼叫资源释放时激活集1小区标识)+''+LTRIM(a.呼叫资源释放时激活集1扇区标识)+'0',b.PN,
LTRIM(a.呼叫资源释放时激活集2小区标识)+''+LTRIM(a.呼叫资源释放时激活集2扇区标识)+'0',c.PN,
LTRIM(a.呼叫资源释放时激活集3小区标识)+''+LTRIM(a.呼叫资源释放时激活集3扇区标识)+'0',e.PN,d.PN) f
where (f.PN1和2距离+f.PN1和3距离)>(f.同PN1与PN2最近距离+f.同PN1与PN3最近距离)
or (f.PN1和2距离+f.PN2和3距离)>(f.同PN2与PN1最近距离+f.同PN2与PN3最近距离) 
or (f.PN1和3距离+f.PN2和3距离)>(f.同PN3与PN1最近距离+f.同PN3与PN2最近距离)这样筛选不出数据来,group by了太多东西了,看得懂的有什么办法教教我怎么弄啊。求救高手