각각 최신 몇 개의 SQL 구현 코드 를 분류 합 니 다.

CREATE TABLE table 1([ID][bigint]IDENTITY(1,1)NOT NULL,[Name][nvarchar](128)NOT NULL,[class]int not null,[date]datetime not null)class 는 분류 번 호 를 표시 합 니 다.분류 수가 고정 되 지 않 습 니 다.적어도 수천 가지 분류 날짜 가 이 기록 이 업 데 이 트 된 시간 을 표시 합 니 다.우 리 는 현재 각 분류 에서 최신 으로 업 데 이 트 된 5 개의 기록 을 얻 고 싶 습 니 다.해결 방안 select id,name,class,date from(select id,name,class,date,rownumber()over(partition by class order by date desc)as rowindex from table 1)awhere rowindex<=5 create table\#temp(company varchar(50),product varchar(50),input Date datetime)insert into\#temp(company,product,input Date)values('항주 대명 유한 공사','자동차 1','2010-8-1')insert into\#temp(company,product,input Date)values('항주 대명 유한 공사','자동차 2','2010-8-1')insert into\#temp(company,product,input Date)values('항주 대명 유한 공사','자동차 3','2010-8-1')insert into\#temp(company,product,input Date)values('항주 대명 유한 공사','자동차 4','2010-8-1')insert into\#temp(company,product,input Date)values('항주 대명 유한 공사','자동차 5','2010-7-1')insert into\#temp(company,product,input Date)values('북경 소 과 유한 공사','자동차 1','2010-8-1')insert into\#temp(company,product,input Date)values('북경 소 과 유한 공사','자동차 2','2010-8-1')insert into\#temp(company,product,input Date)values('북경 소 과 유한 공사','자동차 3','2010-8-1')insert into\#temp(company,product,input Date)values('베 이 징 소 과 유한 공사','자동차 4','2010-8-1')insert into\#temp(company,product,input Date)values('상하 이에 있 는 유한 공사','자동차 1','2010-8-1')insert into\#temp(company,product,input Date)values('상하 이에 있 는 유한 공사','자동차 2','2010-8-1')insert into\#temp(company,product,input Date)input Date)values('상하 이에 득 유한 공사','자동차 3','2010-8-1')insert into\#temp(company,product,input Date)values('상하 이에 득 유한 공사','자동차 4','2010-8-1')insert into\#temp(company,product,input Date)values('천진 왕 왕 왕 유한 공사','자동차 4','2010-8-1')insert into\#temp(company,product,input Date)values('천진 왕 왕 유한 공사','자동차 5','2010-8-1')select*from\#temp create proc getdata@num int as begin select top 4*from(select(select count(*)from\#temp where company=a.company and product<=a.product)as order,a.company,a.product,a.inputDate from\#temp a)b where order>=@num order by order,inputDate desc end go getdata 2/*결과 1 항주 대명 유한 공사 자동차 1 2010-08-01 00:00:00.000 1 북경 소 과 유한 공사 자동차 1 2010-08-01 00:00:00.000 1 상해 유 득 유한 공사 자동차 1 2010-08-01 00:00:00.000 1 천진 왕 왕 유한 공사 자동차 4 2010-08-01 00:00:00.000 2 천진 왕 왕 유한 공사 자동차 5 2010-08-01 00:00:00.000 2 상해 에는득 유한 공사 자동차 2 2010-08-01 00:00:00.000 2 북경 소 과 유한 공사 자동차 2 2010-08-01 00:00:00.000 2 항주 대명 유한 공사 자동차 2 2010-08-01 00:00:00.000 3 항주 대명 유한 공사 자동차 3 2010-08-01 00:00:00.000 3 북경 소 과 유한 공사 자동차 3 2010-08-01 00:00:00.000 3 상해 유 득 유한 공사 자동차 3 2010-08-01 00:00:00.000 4 북쪽경 소 과 유한 공사 자동차 4 2010-08-01 00:00:00.000 4 북경 소 과 유한 공사 자동차 4 2010-08-01 00:00:00.000 4 상해 유 득 유한 공사 자동차 4 2010-08-01 00:00:00.000 4 항주 대명 유한 공사 자동차 4 2010-08-01 00:00:00.000 5 항주 대명 유한 공사 자동차 5 2010-07-01 00:00:00.000*/--sql 2005 create proc getdata 2005@num int as begin select top 4 * from ( select row_번호()over(partition by company order by product)as order,a.company,a.product,a.inputDate from\#temp a)b where order>=@num order by order by order by order,input Date desc end getdata 2005 4 select*from\#temp select(select count(*)from\#temp where company+product<=a.company+a.produt)as order,a.company,a.produt,a.produt,a.produt,a.input Date,a.company+a.produt as only 표지 줄 from\#temp a order by company,product
 
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->if object_id(N'company') is not null
drop table company
go
create table company
(
companyname varchar(2),
product varchar(60)
)
-- 1
insert into company
select 'A','A1' union
select 'A','A2' union
select 'A','A3' union
select 'A','A4' union
select 'A','A5' union
select 'A','A6' union
select 'A','A7' union
select 'A','A8' union
select 'A','A9' union
select 'A','A10'
-- 2
insert into company
select 'B','B1' union
select 'B','B2' union
select 'B','B3' union
select 'B','B4' union
select 'B','B5' union
select 'B','B6' union
select 'B','B7' union
select 'B','B8' union
select 'B','B9' union
select 'B','B10'
-- 3
insert into company
select 'C','C1' union
select 'C','C2' union
select 'C','C3' union
select 'C','C4' union
select 'C','C5' union
select 'C','C6' union
select 'C','C7' union
select 'C','C8' union
select 'C','C9' union
select 'C','C10'
-- 4
insert into company
select 'D','D1' union
select 'D','D2' union
select 'D','D3' union
select 'D','D4' union
select 'D','D5' union
select 'D','D6' union
select 'D','D7' union
select 'D','D8' union
select 'D','D9' union
select 'D','D10'
-- 5
insert into company
select 'E','E1' union
select 'E','E2' union
select 'E','E3' union
select 'E','E4' union
select 'E','E5' union
select 'E','E6' union
select 'E','E7' union
select 'E','E8' union
select 'E','E9' union
select 'E','E10'
-- 6
insert into company
select 'F','F1' union
select 'F','F2' union
select 'F','F3' union
select 'F','F4' union
select 'F','F5' union
select 'F','F6' union
select 'F','F7' union
select 'F','F8' union
select 'F','F9' union
select 'F','F10'
-- 7
insert into company
select 'G','G1' union
select 'G','G2' union
select 'G','G3' union
select 'G','G4' union
select 'G','G5' union
select 'G','G6' union
select 'G','G7' union
select 'G','G8' union
select 'G','G9' union
select 'G','G10'
-- 8
insert into company
select 'H','H1' union
select 'H','H2' union
select 'H','H3' union
select 'H','H4' union
select 'H','H5' union
select 'H','H6' union
select 'H','H7' union
select 'H','H8' union
select 'H','H9' union
select 'H','H10'
-- 9
insert into company
select 'I','I1' union
select 'I','I2' union
select 'I','I3' union
select 'I','I4' union
select 'I','I5' union
select 'I','I6' union
select 'I','I7' union
select 'I','I8' union
select 'I','I9' union
select 'I','I10'
-- 10
insert into company
select 'J','J1' union
select 'J','J2' union
select 'J','J3' union
select 'J','J4' union
select 'J','J5' union
select 'J','J6' union
select 'J','J7' union
select 'J','J8' union
select 'J','J9' union
select 'J','J10'
IF (select Object_id('Tempdb..#t')) IS NULL
select identity(int,1,1) as id,* into #t from company
order by left(product,1),cast(substring(product,2,2) as int)
if object_id(N'getdata','P') is not null
drop table getdata
go
create proc getdata
@num1 int --
as
begin
select companyname,product from
(
select row_number() over (partition by companyname order by id) as ,*
from #t
) a
where =@num1
order by companyname
end
go
getdata 4
go
DROP procedure getdata

좋은 웹페이지 즐겨찾기