一個很有難度的sql
select      pnl,date_piece,model_no,factsal    
       from      wg_yyjz    
    where      date_piece   like    '200703% '; 
 ---------------------------------------------- 
 pnl               date_piece            model_no      factsal   
 05431	20070301	PM-192	76.69 
 05434	20070312	BM-78	71.53 
 05461	20070322	130	55.16 
 05461	20070322	-002	55.16 
 05461	20070322	192	55.16 
 05479	20070324	-192-1	56.38 
 05485	20070325	78	66.59 
 05488	20070328	78	57.08 
 05488	20070328	78.1	57.08 
 ------------------------------------------- 
 我想得到的結果是: 
 (相同工號同一天不同model_no工人(pnl)的factsal有重復(因數據量大,可能有多個重復factsal) 
    的就賦值為0,只保留一個factsal(為一天的實際工資值)) 
 ------------------------------------------- 
 pnl               date_piece            model_no      factsal   
 05431	20070301	PM-192	76.69 
 05434	20070312	BM-78	71.53 
 05461	20070322	130	55.16 
 05461	20070322	-002	0 
 05461	20070322	192	0 
 05479	20070324	-192-1	56.38 
 05485	20070325	78	66.59 
 05488	20070328	78	57.08 
 05488	20070328	78.1	0 
 ------------------------------------------- 
 怎麼實現?help!
------解决方案----------------------保留model_no相對最小的一條: 
 update wg_yyjz  
 set factsal=0 
 where date_piece like  '200703% ' 
 and exists(select 1 from wg_yyjz a  
           where a.pnl=wg_yyjz.pnl 
             and a.date_piece=wg_yyjz.dete_piece 
             and a.factsal=wg_yyjz.factsal 
             and a.model_no <wg_yyjz.model_no)