数据库去重 取值
现有数据
ID RID WID MaxVal MinVAL C1 C2
1 AAA BBB 12 20 ADC BFE
2 AAA BBB 112 320 ADC BFE
3 AAA BBB 11 30 ADC BFE
4 AAB BBB 121 120 ADC BFE
5 AAB BBB 112 320 ADC BFE
6 AAB BBB 11 30 ADC BFE
4 AAC AAA 121 120 ADC BFE
5 AAC BBB 112 320 ADC BFE
6 AAC CCC 11 30 ADC BFE
7 AAA AAA 121 120 ADC BFE
8 AAD BBB 112 320 ADC BFE
9 AAA CCC 11 30 ADC BFE
10 BBB CCC 11 30 ADC BFE
需要得到以下数据
ID RID WID MaxVal MinVAL C1 C2
1 AAA BBB 12 20 ADC BFE
2 AAA BBB 112 320 ADC BFE
3 AAA BBB 11 30 ADC BFE
以上数据处理为一条
AAA BBB 112 20 ADC BFE
4 AAB BBB 121 120 ADC BFE
5 AAB BBB 112 320 ADC BFE
6 AAB BBB 11 30 ADC BFE
AAB BBB 121 30 ADC BFE
4 AAC AAA 121 120 ADC BFE
5 AAC BBB 112 320 ADC BFE
6 AAC CCC 11 30 ADC BFE
此时无变化
7 AAA AAA 121 120 ADC BFE
8 AAD BBB 112 320 ADC BFE
9 AAA CCC 11 30 ADC BFE
此时无变化
10 BBB CCC 11 30 ADC BFE
此时无变化
最后数据
AAA BBB 112 20 ADC BFE
AAB BBB 121 30 ADC BFE
AAC AAA 121 120 ADC BFE
AAC BBB 112 320 ADC BFE
AAC CCC 11 30 ADC BFE
BBB CCC 11 30 ADC BFE
原则是:
RID 和 WID 同时相等
MaxVal取出重复数据中的较大值
MinVAL取出重复数据中较小值
[解决办法]
SELECT RID, WID, MAX(MaxVal) AS Expr1, MIN(MinVAL) AS Expr2, C1, C2
FROM table1
GROUP BY RID, WID, C1, C2