oracle 分组(group)

来源:百度知道 编辑:UC知道 时间:2024/05/04 17:29:19
select pkdz.id ,zsmx.id as zsmxid,pzty.typh_q, pzty.typh_z, pzty.szsk, skxx.swjgid,zsmx.je from pz_pztyjl pzty
join pz_pkdzjl pkdz on (pzty.pkdzjl_id = pkdz.id )
join sk_hd_zsmx zsmx on ( pkdz.id = zsmx.tyjks_id )
join sk_zt_skxx skxx on (zsmx.skxx_id = skxx.id)

我要根据pkdz.id ,zsmx.id 两个字段进行分组,往下的条件怎么写?
先根据pkdz.id进行分组 ,然后在根据zsmx.id进行分组,盼高手解答
我是问题是查询的结果集中有重复的记录,我的目的是去掉重复的记录
zsmx.id是唯一的 .pkdz.id ,zsmx.id 是主见
报表中不能显示pkdz.id ,zsmx.id ,显示查询结果,而且要去掉重复的记录
去掉的是重复的记录,不是项

你写的这些id不是主键吧。。
select pkdz.id ,zsmx.id as zsmxid,pzty.typh_q, pzty.typh_z, pzty.szsk, skxx.swjgid,zsmx.je from pz_pztyjl pzty
join pz_pkdzjl pkdz on (pzty.pkdzjl_id = pkdz.id )
join sk_hd_zsmx zsmx on ( pkdz.id = zsmx.tyjks_id )
join sk_zt_skxx skxx on (zsmx.skxx_id = skxx.id)
group by pkdz.id ,zsmx.id
order by pkdz.id ,zsmx.id
*********************
你要想去掉重复记录完全可以换种写法,比如delete ** from table where 字段 in (select 。。。)或者在表select字段上直接distinct

仅仅是去除重复项可以考虑distinct啊
select distinct pzty.typh_q, pzty.typh_z, pzty.szsk, skxx.swjgid,zsmx.je from pz_pztyjl pzty
join pz_pkdzjl pkdz on (pzty.pkdzjl_id = pkdz.id )
join sk_hd_zsmx zsmx on ( pkdz.id = zsmx.tyjks_id )
join sk_zt_skxx skxx on (zsmx.skxx_id = skxx.id)
或者每个项都上个聚集函数
select min(pzty.typh_q),min(pzty.typh_z), min(pzty.szsk), min(skxx.swjgid),min(zsmx.je) from pz_pztyjl pzty
join pz_pkdzjl pkdz on (pzty.pkdzjl_id = pkdz.id )
join sk_hd_zsmx z