2014-09-19 105 views
-1

我有這樣的數據。有時候有2條記錄,其中1條郵寄地址爲&是非郵寄地址,有時候只有1條記錄,可能是郵寄地址或非郵寄地址。根據1列爲每個人選擇唯一記錄

UniqueID,FirstName,LastName,DOB,House Number,City,State,Mailing 

4444,George,Jetson,10/10/55,800,Orbit City,Space,0  
4444,George,Jetson,10/10/55,555,Orbit City,Space,1  
5555,Fred,Flintstone,12/12/04,88,Bedrock,PH,0  
5555,Fred,Flintstone,12/12/04,100,Bedrock,PH,1  
6666,Barney,Rubble,7/7/07,999,Bedrock,PH,0  
7777,Jonny,Quest,5/30/64,343,Action City,KS,1 

我試圖做一個查詢,將返回1行爲每個人和喜歡郵寄地址,如果它存在。因此,理想情況下,查詢將返回這些記錄

4444,George,Jetson,10/10/55,555,Orbit City,Space,1  
5555,Fred,Flintstone,12/12/04,100,Bedrock,PH,1  
6666,Barney,Rubble,7/7/07,999,Bedrock,PH,0  
7777,Jonny,Quest,5/30/64,343,Action City,KS,1 

沒有人有任何建議,基於一些我一直在閱讀文章,我想,也許我需要有一個子查詢的?我在閱讀的例子中遇到了OVER PARTITION,或者我應該有某種IF語句?我對SQL很陌生,所以感謝任何方向或幫助。

+0

你使用的是什麼rdbms? – 2014-09-19 22:38:00

+0

可能重複的[檢索每個組中的最後一條記錄](http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) – Bulat 2014-09-19 23:07:00

回答

2

你也可以使用此查詢爲:

select * 
from tablename t 
where mailing = 1 
union all 
select * 
from tablename t 
where not exists (select 1 from tablename t2 where t2.uniqueid = t.uniqueid); 
+0

謝謝,UNION ALL正是我一直在尋找的東西,對不起,它花了一段時間來標記答案,但我想確保它對我有用,並且我在這個項目上脫軌了...... – 2014-10-14 04:13:08

2

隨着SQL-Server,您可以使用ROW_NUMBER,例如用CTE:

WITH CTE AS 
(
    SELECT UniqueID, FirstName, LastName, DOB, [House Number], City, State, Mailing, 
      rn = ROW_NUMBER() OVER (PARTITION BY UniqueID ORDER BY Mailing DESC) 
    FROM dbo.TableName 
) 
SELECT UniqueID, FirstName, LastName, DOB, [House Number], City, State, Mailing, 
FROM CTE 
WHERE rn = 1 

這裏有一個小提琴:http://sqlfiddle.com/#!3/886b0/5/0

UNIQUEID FIRSTNAME LASTNAME DOB HOUSE NUMBER CITY STATE    MAILING 
4444  George Jetson October, 10 1955 00:00:00+0000 555 Orbit City Space 1 
5555  Fred Flintstone December, 12 2004 00:00:00+0000 100 Bedrock PH  1 
6666  Barney Rubble July, 07 2007 00:00:00+0000 999 Bedrock PH    0 
7777  Jonny Quest May, 30 1964 00:00:00+0000 343 Action City KS   1 
+0

我只想說'order by Mailing desc '。 – 2014-09-19 22:49:40