27,580
社区成员
发帖
与我相关
我的任务
分享
create table xiaol028 (col1 char(1), col2 int, COL3 char(5))
insert into xiaol028
select 'C', 3, 'AAA' union all
select 'B', 3, 'BBB' union all
select null, 3, 'CCC' union all
select null, 2, 'AAA' union all
select null, 2, 'BBB' union all
select 'D', 1, 'aaa' union all
select 'B', 1, 'bbb'
select t.col1,t.col2,t.col3
from
(select row_number() over(partition by col2 order by (select 0)) rn,
col1,col2,col3
from xiaol028) t
where t.rn=1
order by t.col2 desc
col1 col2 col3
---- ----------- -----
C 3 AAA
NULL 2 AAA
D 1 aaa
(3 row(s) affected)
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-11-30 16:07:21
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([col1] varchar(1),[col2] int,[COL3] varchar(3))
insert [tb]
select 'C',3,'AAA' union all
select 'B',3,'BBB' union all
select null,3,'CCC' union all
select null,2,'AAA' union all
select null,2,'BBB' union all
select 'D',1,'aaa' union all
select 'B',1,'bbb'
--------------开始查询--------------------------
select
col1 ,col2, COL3
from
(select px=ROW_NUMBER()over(partition by col2 order by GETDATE()),* from tb)t
where
px=1
----------------结果----------------------------
/* col1 col2 COL3
---- ----------- ----
D 1 aaa
NULL 2 AAA
C 3 AAA
(3 行受影响)
*/select distinct b.* from tb a
cross apply (select top 1 * from tb where col2=a.col2) bselect distinct b.* from tb a
cross apply (select top 1 from tb where col2=a.col2) b