[英]Grouping data in SQL Server
Please Consider the following table : 请考虑下表:
As you can see the Name
column has some repeated values with is a group like I need to have a query so I can fetch just the first row of a group something like this: 如您所见,“ Name
列具有一些重复的值,是一个类似我需要进行查询的组,因此我可以仅获取组的第一行,如下所示:
Please take in to account that I need the fastest way because the real table is not like that and could have lots of data to be filter that way. 请考虑到我需要最快的方法,因为真正的表不是那样,并且可能有很多数据需要这种方式进行过滤。
Thanks in advance. 提前致谢。
this depends greatly on how you define 'the first in the group' 这很大程度上取决于您如何定义“组中的第一个”
something like this: 这样的事情:
select name, min(code)
from mytable
group by name
order by name
Assuming the table name is test (change to match yours), try this 假设表名是test(更改为匹配你的名称),试试这个
CREATE TABLE [dbo].[test](
[name] [varchar](3) NULL,
[code] [varchar](5) NULL,
[RowNumber] [int] NOT NULL,
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
[RowNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A1','AED',1)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A1','BG',2)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A1','WS',3)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A2','CER',4)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A2','HJY',5)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A5','OLP',6)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A6','LOO',7)
INSERT INTO [test] ([name],[code],[RowNumber])VALUES('A6','AED',8)
SELECT a.*
FROM dbo.test a
INNER JOIN(SELECT name,
MIN(rownumber) AS rownumber
FROM dbo.test
GROUP BY name) b
ON a.name = b.name
AND a.rownumber = b.rownumber
ORDER BY a.name
If the RowNumber column is always going to be sequential the put an index on that column. 如果RowNumber列总是要连续的,则在该列上放置一个索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.