我无法弄清楚如何在sql中进行以下选择:
表:
id score1 score2 score3
0 null null 3
0 1 null 3
1 null 2 null
选择
id score1 score2 score3
0 1 null 3
1 null 2 null
谢谢,
詹姆斯
答案 0 :(得分:2)
使用MAX
SELECT ID,
MAX(score1) score1,
MAX(score2) score2,
MAX(score3) score3
FROM tableName
GROUP BY ID
答案 1 :(得分:1)
这是基于选择具有比相同ID的任何其他行更多分数的行。保留“最佳”数据,如果你愿意的话。
select id, score1, score2, score3
from (
select *,
rn=row_number() over (partition by id
order by
case when score1 is not null then 1 else 0 end
+
case when score2 is not null then 1 else 0 end
+
case when score3 is not null then 1 else 0 end desc)
from tbl
) x
where rn=1
e.g。
id score1 score2 score3
0 null 4 null
0 1 null 3 <<< keep
1 null 2 null
当然,你可能更喜欢John的答案,它会使ID = 0的行(0,1,4,3)。