은 다음 표를 고려하십시오 실제 테이블이 마음에 들지 않기 때문에 나는 가장 빠른 방법이 필요하다는 계정에하시기 바랍니다데이터 그룹화
이 같은 그룹 뭔가 단지 첫 번째 행 그런 식으로 많은 양의 데이터를 필터링 할 수 있습니다.
미리 감사드립니다.
은 다음 표를 고려하십시오 실제 테이블이 마음에 들지 않기 때문에 나는 가장 빠른 방법이 필요하다는 계정에하시기 바랍니다데이터 그룹화
이 같은 그룹 뭔가 단지 첫 번째 행 그런 식으로 많은 양의 데이터를 필터링 할 수 있습니다.
미리 감사드립니다.
이 당신이
일이 같은 '그룹의 첫 번째'정의하는 방법에 따라 크게 차이 :
select name, min(code)
from mytable
group by name
order by name
테이블 이름을 가정하고 테스트입니다 (변화가 당신과 일치하는)이
시도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
RowNumber 열이 항상 순차적 일 경우 해당 열에 인덱스를 넣으십시오.
성능은 일반적으로 정상입니다. 당신은 아마도 이름, 코드 열에 대한 색인을 고려할 것입니다. – Randy