从下表中
如何查询以下输出?
我的初步查询是:
select
bpai.sequence_id, bpai.last_name, bpai.given_name,
bpai.middle_name, bpai.middle_initial,
bpai.gender, bpai.birth_date, bpai.birth_place_via_psgc, bpai.citizenship,
bpai.primary_mobile_number, bpai.primary_email_address, count(*)
from bpaitbl bpai
inner join (select
*, count(*) as countof
from bpaitbl
group by
last_name, middle_name,
gender, birth_date, citizenship
having (count(*) > 1)
) profil on bpai.last_name like profil.middle_name
and bpai.gender = profil.gender
and bpai.birth_date = profil.birth_date
and bpai.citizenship = profil.citizenship
;
并且无论如何我无法做出输出。请帮忙。
答案 0 :(得分:0)
由于您在问题中没有说,但在标题中提及结果集所代表的内容,我认为您需要一个包含重复记录的行列表。
以下查询将列出所有具有重复记录的记录,显示重复项的sequence_id最高的记录:
SELECT
a.sequence_id,
a.last_name,
a.given_name,
a.middle_name,
a.gender,
a.birth_date,
a.citizenship
FROM bpaitbl a
LEFT JOIN bpaitbl b
ON a.last_name = b.last_name AND
a.given_name = b.given_name AND
a.middle_name = b.middle_name AND
a.gender = b.gender AND
a.birth_date = b.birth_date AND
a.citizenship = b.citizenship AND
a.sequence_id > MAX(b.sequence_id)
WHERE b.sequence_id IS NULL;
GROUP BY
a.last_name,
a.given_name,
a.middle_name,
a.gender,
a.birth_date,
a.citizenship
要显示sequence_id最低的记录,请将>
更改为<
。如果您想要所有行,包括那些没有重复的行,请删除where子句。