2016-09-15 26 views
0

我在表格中有兩列感興趣的列。他們是'PersonID',它是每個人的唯一ID和'性別'列。列出每個人具有多個性別值的記錄

我的表對於每個人都有多行,因爲每行都反映了他們的名字下的策略。 但是,對於每個人我都注意到一些數據質量問題,其中他們的性別被記錄爲「男性」的某些行,然後是「女性」的其他人

如何編譯所有行的列表顯示已被記錄爲男性和女性的'PersonIDs'?

因此,我的表如何看待這一刻的例子是這樣的: 4439; 1 4439; 1 4439; 1 4439; 1 4439; 1 4439; 0 4439; 0

,其中4439 = PERSONID和1 =男(0 =女)

我只想要一個清單給我的一切,在性別字段

回答

0

這樣就解決了你,

SELECT ID FROM POLICYTABLE 
WHERE GENDER=0 OR GENDER=1 
GROUP BY ID 
HAVING COUNT(*)>1 
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 
+0

這將返回誰與同性別代碼的多個記錄,以及個人。 – Dan

+0

@丹你說得對,內德明天要重新工作。 – artm

0

試試這個。

SELECT PersonID 
FROM 
(
    SELECT PersonID,Gender 
    FROM table 
    GROUP BY PersonID,Gender 
) as DATA 
GROUP BY PersonID 
HAVING COUNT(*) > 1 
0

你只需要依靠每個人的不同性別代碼的數量:

SELECT PersonID 
FROM MyTable 
GROUP BY PersonID 
HAVING COUNT(DISTINCT Gender) > 1 
相關問題