我有这样的事情:
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返回2次的结果。
我希望它只是在Result1列中返回第一次出现的重复ID 3结果,如下所示:
ID Result1 Result2 Result3
1 value1
2 value1 value2
3 value1
4 value1 value2 value3
如何消除重复结果并防止计数?
答案 0 :(得分:0)
TD14.10最终添加了DENSE_RANK(可以在bluefeet的查询中使用它代替ROW_NUMBER),但在你必须添加某种DISTINCT处理之前,例如:
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;