2010-02-11 26 views
2

我被困在SQL的問題上。我有一個表中包含列名很多重複的條目: -SQL Server選擇截然不同的地獄

eventnumber housenumber value1 value2 

這些列名中沒有一個是因爲有很多重複的主鍵。我想這樣做的是選擇到通過不同housenumber另一個表,但我似乎得到整個表中複製過,我使用: -

Select * into temp_table from schedule_temp where housenumber in (select distinct housenumerb from schedule_temp) 

現在我把它弄壞了下來一點,如果我這樣做: -

Select distinct housenumber into temp from schedule_temp group by housenumber 

我得到的唯一housenumbers表......但後來我如何使用這個獨特的表來驅動另一個選擇,從臨時挑選housenumbers只有從schedule_temp得到housenumber的一個實例?希望這是有道理的。

如果你能保存我的理智,啤酒就在我身上。

+0

* eventnumber *,* value1 *,* value2 *對於給定的* housenumber *是相同的嗎?如果沒有,你想如何決定把哪些放入你的獨特* housenumbers * – bluecoder 2010-02-11 20:22:00

+0

你的帖子也導致我瘋狂。你能不能改寫一下更清楚 - 特別是你可以發佈一個真正的模式樣本和你想要的最終數據(不是半個步驟)? – prodigitalson 2010-02-11 20:23:06

+0

對不起,結果應該由獨特的房號顯示。 – jon 2010-02-11 20:54:28

回答

0

首先,我會得到的數據插入到表具有自動增量ID

因此,創建一個表ID,eventnumber,housenumber,值1,值其中id是自動編號。

然後

Insert Into NewTemp(eventnumber,housenumber,value1, value2) 
Select eventnumber,housenumber,value1, value2 From schedule_temp 

那麼這個查詢應該guve你每戶#1排

Select nt.* From NewTemp nt 
Join (select max(id) as id, housenumber from NewTemp Group By housenumber) t on t.id=nt.id 
+0

非常感謝brendan,它給了我我的數據,這些數據按照我所追求的獨特housenumber排序,但是我怎樣才能將結果放入新表格中? – jon 2010-02-11 20:46:43

+0

從表1中選擇* Into SomeNewTable – brendan 2010-02-11 21:26:51

+0

謝謝,我應該知道...這是漫長的一天:) – jon 2010-02-11 23:34:53

1

你不想重複的記錄(如,每個記錄具有不同於至少一列所有其他記錄)。你想從每個記錄組(或分區)獲得勝利者。

SELECT * 
FROM 
(
    SELECT 
    EventNumber, HouseNumber, Value1, Value2, 
    ROW_NUMBER() 
     OVER(PARTITION BY HouseNumber ORDER BY HouseNumber) as rowNum 
    FROM ServiceAddr 
) sub 
WHERE sub.rowNum = 1