SQL 分组后只获取每组的一条数据

时间:2019-10-22
本文章向大家介绍SQL 分组后只获取每组的一条数据,主要包括SQL 分组后只获取每组的一条数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/****** Object:  Table [dbo].[TEMP]    Script Date: 2018-8-22 星期三 23:33:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TEMP](
	[ID] [nvarchar](36) NULL,
	[SerialNo] [nvarchar](36) NULL,
	[Qty] [numeric](10, 1) NULL,
	[ForeignId] [nvarchar](32) NULL,
	[Flag] [bit] NOT NULL,
	[CreateDate] [datetime] NOT NULL
) ON [PRIMARY]

GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'6073188b18574593b847dd0cac936dd5', N'1bf1c0f4f5034b2588b1c2e2b4f80294', CAST(10.0 AS Numeric(10, 1)), N'f6df43bdc3ef4eaeb8c0d98c9abea7eb', 0, CAST(0x0000A944017BBFEF AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'6073188b18574593b847dd0cac936dd5', N'1bf1c0f4f5034b2588b1c2e2b4f80294', CAST(10.0 AS Numeric(10, 1)), N'b01892f11a284eea990afe0a4e4398b4', 0, CAST(0x0000A944017BDEF9 AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'136eba69477c41879e4d0cf9a791d460', N'e60cffd61c314d248403cfd08370ed8c', CAST(10.0 AS Numeric(10, 1)), N'4ca2da2abf434910b5d3d6ed6c343637', 0, CAST(0x0000A944017C3F82 AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'136eba69477c41879e4d0cf9a791d460', N'e60cffd61c314d248403cfd08370ed8c', CAST(10.0 AS Numeric(10, 1)), N'b6fa2439e5bb44c58cff03b2725558d8', 0, CAST(0x0000A944017C5604 AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'136eba69477c41879e4d0cf9a791d460', N'e60cffd61c314d248403cfd08370ed8c', CAST(11.0 AS Numeric(10, 1)), N'c465a72d36b5450e9a53e565ed95012d', 1, CAST(0x0000A944017B4EC2 AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'136eba69477c41879e4d0cf9a791d460', N'e60cffd61c314d248403cfd08370ed8c', CAST(20.0 AS Numeric(10, 1)), N'd68efcd219634579966801b036ca8e29', 1, CAST(0x0000A944017C7370 AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'6073188b18574593b847dd0cac936dd5', N'1bf1c0f4f5034b2588b1c2e2b4f80294', CAST(8.0 AS Numeric(10, 1)), N'2178fc8b537e4841a505e5e5a960ed83', 1, CAST(0x0000A944017C94CD AS DateTime))
GO
INSERT [dbo].[TEMP] ([ID], [SerialNo], [Qty], [ForeignId], [Flag], [CreateDate]) VALUES (N'6073188b18574593b847dd0cac936dd5', N'1bf1c0f4f5034b2588b1c2e2b4f80294', CAST(22.0 AS Numeric(10, 1)), N'7306f311b69e425cba13991030d7a2d3', 1, CAST(0x0000A944017CB571 AS DateTime))
GO
SELECT * FROM dbo.TEMP A
WHERE A.ForeignId IN (
	SELECT TOP 1 B.ForeignId FROM dbo.TEMP B WHERE B.ID = A.ID AND B.SerialNo = A.SerialNo
	ORDER BY B.Flag,B.CreateDate
)

  

原文地址:https://www.cnblogs.com/godbell/p/11718412.html