查询统计一个表的数据,但是我又不想使用这个表的所有数据,
根据某个字段([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)