列出每个人具有多个性别值的记录
问题描述:
我在表格中有两列感兴趣的列。他们是'PersonID',它是每个人的唯一ID和'性别'列。列出每个人具有多个性别值的记录
我的表对于每个人都有多行,因为每行都反映了他们的名字下的策略。 但是,对于每个人我都注意到一些数据质量问题,其中他们的性别被记录为“男性”的某些行,然后是“女性”的其他人
如何编译所有行的列表显示已被记录为男性和女性的'PersonIDs'?
因此,我的表如何看待这一刻的例子是这样的: 4439; 1 4439; 1 4439; 1 4439; 1 4439; 1 4439; 0 4439; 0
,其中4439 = PERSONID和1 =男(0 =女)
我只想要一个清单给我的一切,在性别字段
答
这样就解决了你,
SELECT ID FROM POLICYTABLE
WHERE GENDER=0 OR GENDER=1
GROUP BY ID
HAVING COUNT(*)>1
答
更新既有1和0的PersonIDs:
SELECT DISTINCT personid FROM(
SELECT PersonID
, RANK() OVER (partition by personid order by gender) as rnk
FROM table t
) i
WHERE i.rnk > 1
而不是@Dan指出的。
SELECT PersonID
FROM table t
WHERE t.gender = '0' OR t.gender = '1'
GROUP BY PersonID
HAVING COUNT(*) > 1
如果需要其他信息:
SELECT p.Name, p.lastName, p.DOB
FROM table p
WHERE p.PersonID IN
(
SELECT PersonID
FROM table t
WHERE t.gender = '0' OR t.gender = '1'
GROUP BY PersonID
HAVING COUNT(*) > 1
) i
答
试试这个。
SELECT PersonID
FROM
(
SELECT PersonID,Gender
FROM table
GROUP BY PersonID,Gender
) as DATA
GROUP BY PersonID
HAVING COUNT(*) > 1
答
你只需要依靠每个人的不同性别代码的数量:
SELECT PersonID
FROM MyTable
GROUP BY PersonID
HAVING COUNT(DISTINCT Gender) > 1
这将返回谁与同性别代码的多个记录,以及个人。 – Dan
@丹你说得对,内德明天要重新工作。 – artm