日期:2014-05-18  浏览次数:20535 次

关于表联查分类汇总的MAX问题
举例说明:以下是我写的语句,查询三个表联查,然后汇总到一起

select 条码信息,单据编号,count(*) 数量,ICMO.finterid From l_计件工资 
left join l_条码 on l_计件工资.条码信息=l_条码.条码打印 
LEFT JOIN ICMO ON 单据编号=ICMO.fbillno
where (l_计件工资.条码信息='1020905041200027')
and left(单据编号,4)='WORK' 
group by 条码信息,单据编号,icmo.finterid

但是l_条码表中, 有一个条关联多个单据的问题出现,即以下结果
1020905041200027 WORK002905 5 3985
1020905041200027 WORK003603 5 4689
查询出来为两行记录,我只想保留单据号最大的一个,通过上面的一个语句能否实现?
昨天想了一天也没想到合适的办法

------解决方案--------------------
SQL code



select 条码信息,单据编号,count(*) 数量,ICMO.finterid From l_计件工资  
left join l_条码 on l_计件工资.条码信息=l_条码.条码打印  
LEFT JOIN ICMO ON 单据编号=ICMO.fbillno
where (l_计件工资.条码信息='1020905041200027')
and left(单据编号,4)='WORK' 
and 单据号=(select MAX(单据号) from tbl s where s.col=....)--这里自己写关联条件
group by 条码信息,单据编号,icmo.finterid

------解决方案--------------------
select 条码信息,单据编号,count(*) 数量,ICMO.finterid From l_计件工资
left join l_条码 on l_计件工资.条码信息=l_条码.条码打印
LEFT JOIN ICMO ON 单据编号=ICMO.fbillno
where left(单据编号,4)='WORK' 
and Not Exists(select 1 from l_计件工资 AS x .
where x.条码信息=l_计件工资.条码信息 AND x.单据编号>l_计件工资.单据编号)
group by 条码信息,单据编号,icmo.finterid