当前位置: 代码迷 >> Sql Server >> SQL 2005 查询优化 GROUP BY解决思路
  详细解决方案

SQL 2005 查询优化 GROUP BY解决思路

热度:75   发布时间:2016-04-24 10:20:18.0
SQL 2005 查询优化 GROUP BY
本帖最后由 u011062542 于 2014-07-17 11:19:11 编辑
查询统计一个表的数据,但是我又不想使用这个表的所有数据,
根据某个字段([NUM])来筛选,取字段[ID]最大的那条数据来统计;
举例:
表中的数据
ID    NUM    X1    X2    X3
0      n1        x       x       x
1      n1        x       x       x
2      n1        y       y       y
3      n2        x       x       x
想要作为查询的数据
ID    NUM    X1    X2    X3
2      n1        y       y      y
3      n2        x       x       x
然后我写了大概如下的一个查询,能够实现我要的功能,但是速度惨不忍睹,求解决!

DECLARE @SQL varchar(max)
SET @SQL = ''
SELECT @SQL = 'SELECT [NG_Type] as ''ng_type'', COUNT(1) ''ng_count'' 
  FROM ' + NAME + ' WITH (NOLOCK)'
   + ' WHERE ([ID] IN (SELECT MAX([ID])FROM ' + NAME + ' WITH (NOLOCK)' + ' GROUP BY [NUM]))'
   + ' AND [X_001] = ''' + @X_001
   + ''' AND [X_002] = ''' + @X_002
   + ''' AND [X_003] >= ' + @X_003
   + ' AND [X_003] <= ' + @X_004
   + ' GROUP BY [NG_Type]' 
  FROM 
SYS.TABLES 
  WHERE 
NAME = 'LOG_INFO_' + @X_001
EXEC(@SQL)

万分感谢!
------解决方案--------------------
select * from tb  as t where not exists(select 1 from tb where NUM=t.NUM and ID>t.ID)
  相关解决方案