当前位置: 代码迷 >> Sql Server >> 查询 多字段去重复解决办法
  详细解决方案

查询 多字段去重复解决办法

热度:68   发布时间:2016-04-24 10:46:10.0
查询 多字段去重复
KpiId       KpiData                                 YEAR        MONTH       TableIndex
----------- --------------------------------------- ----------- ----------- -----------
19          905.10                                  2009        1           1
19          831.20                                  2009        2           1
19          831.20                                  2009        3           1
19          1500.00                                 2009        7           4
19          878.30                                  2009        7           1
19          4908.25                                 2013        2           4

数据结构如上所示,现在问题是 该怎么让KPIid year month 重复的只显示tableindex 最大的一个呢
上面就只显示 kpidata 为1500的这一条记录   878.3不显示
这样的sql怎么写呢?请各位指导一下。。。
------解决方案--------------------
或者这样:
select *
from t a
where not exists(select 1 from t 
                 where a.KPIid = t.KPIid and a.[YEAR] = t.[YEAR]
                       and a.[MONTH] = t.[MONTH] 
                       and a.TableIndex < t.TableIndex)
          

------解决方案--------------------

SELECT t1.KpiId, t1.[Year], t1.[Month], d.KpiData, d.TableIndex 
FROM (SELECT KpiId, [Year], [Month] 
FROM T GROUP BY KpiID, [Year], [Month]) t1 
CROSS APPLY (SELECT TOP 1 KpiData, TableIndex FROM T WHERE KpiId =t1.KpiId AND [Year]=t1.[Year] AND [Month]=t1.[Month] ORDER BY TableIndex DESC) d  

------解决方案--------------------
select 
  *
from 
  tb t 
where 
  tableindex=(select max(tableindex) from tb where KpiId =t.KpiId AND [Year]=t.[Year] AND [Month]=t.[Month])
  相关解决方案