2013-09-27 38 views
0

我有這樣的事情:Teradata的SQL支點多種結果,消除重複值

ID  Result 
1  value1 
2  value1 
2  value2 
3  value1 
3  value1 
4  value1 
4  value2 
4  value3 

注意,ID 3有出現在兩行相同的結果。

感謝bluefeet(teradata sql pivot multiple occurrences into additional columns),我是能夠產生這樣的:

ID  Result1  Result2  Result3 
1  value1 
2  value1  value2 
3     value1 
4  value1  value2  value3 

我得到我想要的東西,但由於ID 3有多個結果,他們被算作2,然後包含在第二列中,這是針對那些爲一個ID返回兩次的結果。

我想它做的是簡單地返回重複的ID 3結果第一次出現在結果1列,例如:

ID  Result1  Result2  Result3 
1  value1 
2  value1  value2 
3  value1 
4  value1  value2  value3 

我怎樣才能消除重複的結果,並防止其計數?

回答

0

TD14.10最後補充道DENSE_RANK(可以用來代替ROW_NUMBER在bluefeet的查詢),但你必須之前添加某種不同的處理的,例如:

SELECT id, 
    MAX(CASE WHEN seq =1 THEN res END) result1, 
    MAX(CASE WHEN seq =2 THEN res END) result2, 
    MAX(CASE WHEN seq =3 THEN res END) result3 
FROM 
(
    SELECT id, res, ROW_NUMBER() OVER(PARTITION BY id ORDER BY res) seq 
    FROM 
    (
     SELECT DISTINCT id, res 
     FROM yourtable 
    ) d 
) d 
GROUP BY id 
ORDER BY id;