27,579
社区成员
发帖
与我相关
我的任务
分享
USE tempdb
GO
IF OBJECT_ID('dbo.[t]') IS NOT NULL
DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[ID1] INT
,[TXT] NVARCHAR(20)
,[Time] DATETIME
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'1',N'似懂we非its()懂',N'2003-1-1')
INSERT INTO dbo.[t] VALUES(N'1',N'似懂非rw懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'1',N'似fsd懂非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂f非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂非we懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂we非懂',N'2003-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂fs非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂we非懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂sf非懂',N'2003-1-1')
----- 以上为测试数据 -----
SELECT * FROM t AS a WHERE EXISTS(
SELECT 1 FROM t AS b
WHERE a.ID1=b.id1
GROUP BY b.id1
HAVING a.[Time]=MAX(b.[Time])
)
/*
ID1 TXT Time
----------- -------------------- -----------------------
1 似懂we非its()懂 2003-01-01 00:00:00.000
2 似懂we非懂 2003-01-01 00:00:00.000
3 似懂sf非懂 2003-01-01 00:00:00.000
*/
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID1] int,[TXT] nvarchar(27),[Time] Date)
Insert #T
select 1,N'似懂we非懂','2003-1-1' union all
select 1,N'似懂非rw懂','2002-1-1' union all
select 1,N'似fsd懂非懂','2001-1-1' union all
select 2,N'似懂f非懂','2001-1-1' union all
select 2,N'似懂非we懂','2002-1-1' union all
select 2,N'似懂we非懂','2003-1-1' union all
select 3,N'似懂fs非懂','2001-1-1' union all
select 3,N'似懂we非懂','2002-1-1' union all
select 3,N'似懂sf非懂','2003-1-1'
Go
--测试数据结束
Select t.ID1,t.TXT,t.Time from (
SELECT *,ROW_NUMBER()OVER(PARTITION BY ID1 ORDER BY Time DESC) rn FROM #T
)t
WHERE t.rn=1
IF OBJECT_ID('dbo.[t]') IS NOT NULL
DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[ID1] INT
,[TXT] NVARCHAR(20)
,[Time] DATETIME
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'1',N'似懂we非its()懂',N'2003-1-1')
INSERT INTO dbo.[t] VALUES(N'1',N'似懂非rw懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'1',N'似fsd懂非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂f非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂非we懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'2',N'似懂we非懂',N'2003-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂fs非懂',N'2001-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂we非懂',N'2002-1-1')
INSERT INTO dbo.[t] VALUES(N'3',N'似懂sf非懂',N'2003-1-1')
select t.ID1,t.TXT,t.Time from t
inner join (select id1,MAX(txt) as txt from t group by id1) tt on tt.ID1=t.ID1 and tt.txt=t.TXT