读书人

数据库去重 取值,该如何处理

发布时间: 2013-04-20 19:43:01 作者: rapoo

数据库去重 取值
现有数据

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

读书人网 >SQL Server

热点推荐