2010-01-19 34 views
1

我有一個大表(60列,150萬條記錄)非規範化的數據在MS SQL 2005這是從Access數據庫導入。我一直負責規範化並將這些數據插入到我們的數據模型中。集團通過與非獨立列和數據標準化

我想創建一個使用的一組,例如「CUSTOMER_NUMBER」,並返回的結果集僅包含是非分明每個CUSTOMER_NUMBER列的查詢。我不知道這是否是可能的,但如果是這樣的話,它會有很大的幫助。

編輯:如果我的表有3列(CUST_NUM,cust_name_cust_address)和5條

|cust_num|cust_name|cust_address 
|01  |abc  |12 1st street 
|02  |cbs  |1 Aroundthe Way 
|01  |abc  |MLK BLVD 
|03  |DMC  |Hollis Queens 
|02  |cbs  |1 Aroundthe Way 

從我所希望查詢的結果應該只是從CUST_NUM和CUST_NAME數據,因爲cust_address擁有該組不同的值cust_num。 cust_num有許多地址,但只有一個cust_name。

有人能指出我正確的方向嗎?

吉姆

+0

請問您可以發佈一些示例數據和您想要的結果記錄集嗎? – Quassnoi

回答

0

不,這不能完成

2
WITH q AS 
     (
     SELECT *, ROW_NUMBER() OVER (PARTITION BY col1, col2, col3, … ORDER BY id) AS rn 
     FROM mytable 
     ) 
SELECT * 
FROM q 
WHERE rn = 2 

這將僅選擇對PARTITION BY子句中列出的所有列重複的行(事實上,它會如果有選擇的第一個副本)。

+0

這是我要求的,但它不能解決我的問題。我將編輯我的原始隊列。我想按客戶編號對我的表進行分組,並將所有列返回給分組客戶編號的重複值。例如,如果只有CUSTOMER_NAME是very_large_table一樣,我會得到回報,只有CUSTOMER_NUMBER和CUSTOMER_NAME設置,但如果customer_address是一樣的爲每一個客戶,我會回來的所有3列。 – jim