나는 당신이 SQL Server 2012
이상이라고 가정 할 것입니다.
예 데이터 :
다음 코드는 내가 질문에 제시된 예를 들어 상황을 설정하는 데 사용하는 것이다.
는
create table #tmp_table (items char(1), date_entered_onto_system datetime)
insert into #tmp_table values ('P', '2016-11-08 12:01:00')
insert into #tmp_table values ('P', '2016-11-08 12:02:00')
insert into #tmp_table values ('P', '2016-11-08 12:03:00')
insert into #tmp_table values ('3', '2016-11-08 12:04:00')
insert into #tmp_table values ('3', '2016-11-08 12:05:00')
insert into #tmp_table values ('3', '2016-11-08 12:06:00')
insert into #tmp_table values ('3', '2016-11-08 12:07:00')
insert into #tmp_table values ('P', '2016-11-08 12:08:00')
insert into #tmp_table values ('P', '2016-11-08 12:09:00')
insert into #tmp_table values ('8', '2016-11-08 12:10:00')
insert into #tmp_table values ('8', '2016-11-08 12:11:00')
insert into #tmp_table values ('8', '2016-11-08 12:12:00')
insert into #tmp_table values ('P', '2016-11-08 12:13:00')
insert into #tmp_table values ('2', '2016-11-08 12:14:00')
insert into #tmp_table values ('P', '2016-11-08 12:15:00')
insert into #tmp_table values ('P', '2016-11-08 12:16:00')
insert into #tmp_table values ('P', '2016-11-08 12:17:00')
insert into #tmp_table values ('P', '2016-11-08 12:18:00')
insert into #tmp_table values ('P', '2016-11-08 12:19:00')
insert into #tmp_table values ('P', '2016-11-08 12:20:00')
답변 :
이 쿼리는 lag()
기능과 SQL Server 2012
나중에 사용할 수있는 over
절 (아래 링크)를 사용합니다. 이 쿼리는 행과 행 앞에있는 items
값을 비교합니다 (date_entered_onto_system
값에 따라 시간순으로 진행됨). 카운트해야 할 경우 1로 평가하고 그렇지 않은 경우 0으로 평가 한 다음 sum
까지 값을 계산합니다.
Over Clause
select b.items
, sum(b.sum_val) as items_cnt
from (
select a.items
, case when a.items = lag(a.items, 1, NULL) over (order by a.date_entered_onto_system asc) then 0 else 1 end as sum_val
from #tmp_table as a
) as b
group by b.items
Lag Function
결과
이는 예컨대 데이터가 출력된다.
items items_cnt
2 1
3 1
8 1
P 4
명확하지 않습니다. 단일 아이템은 어떻게 생겼습니까? P로 행 수를 계산하는 것이 어떨까요? –
질문 개선에 대한 정보는 [this] (http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/)를 참조하십시오. 그리고 사용했던 모순 된 태그에 대한 설명을 읽어보십시오. 적절한 소프트웨어 (MySQL, Oracle, DB2 등)와 버전으로 데이터베이스 질문에 태그를 지정하는 것이 좋습니다. 'sql-server-2014'. – HABO
나는 내가 분명하다고 생각했지만, 다시 읽으면 혼란이있는 곳을 보았다. "P, 3, 8, 2"는 개별 항목입니다. 수학적 해답을 제시하지 않기 위해 정수와 문자를 섞어 사용했습니다. 즉, "자동차, 버스, iPad, 신발,"시간이 지남에 따라 입력이 "자동차, 자동차, 버스, 버스, iPad, iPad, iPad, 신발, 자동차, 자동차"일 수 있습니다. 그리고 나는 "자동차, 버스, iPad, 신발, 차"로 축소하고 차량의 인스턴스를 계산하려고합니다. – MisterO