T-SQL에서 복잡한 쿼리를 작성하고 있습니다. 그래서 내가 가지고 내가 가진 데이터 세트는 하나의 테이블 (의이 Table T
를 호출하자를)이며, 데이터는동일한 데이터 집합의 다중 조인
| Happened | Contributor | Status | Direction | Purchased |
|-------------------------|-------------|--------|-----------|-----------|
| 2014-10-06 01:00:00.000 | A | 0 | NULL | NULL |
| 2014-10-06 02:00:00.000 | A | 1 | NULL | NULL |
| 2014-10-06 03:00:00.000 | A | 2 | inbound | NULL |
| 2014-10-06 04:00:00.000 | A | 0 | NULL | yes |
| 2014-10-06 05:00:00.000 | A | 2 | outbound | yes |
| 2014-10-06 06:00:00.000 | B | 2 | inbound | NULL |
같이
- 의 원인 일 (
T.Happened
)와 피사체의 고유 쌍 이벤트 (T.Contributor
); - 이벤트가 발생한 순간의 상태.
- 어떤 방향으로 인바운드 또는 아웃 바운드가 될 수 있습니다 (boolean-ish 열).
- 일부 구매 표시 (이전과 동일).
는 내가 필요로하는 각 별개의 기여를 위해, 선택, 쿼리입니다
-
상태가 0에서 1로 변경되었습니다
- 빠른 날짜;
- 상태가 0이 아닌 가장 빠른 datetime 및
T.Direction = 'inbound'
; 이벤트의 - 수
T.Purchased = 'yes'
상태가 0
하지 않고 행의 다른 필드가 비어있는 경우에도 참여자의 전체 집합을 표시합니다. 내가 뭘하려
가 난 후 그 결과 데이터 세트가| Contributor | StatusChangedFrom0To1 | StatusWasNot0AndDirectionWasInbound | StatusWasNot0AndPuchasedWasYes |
|-------------|-------------------------|-------------------------------------|--------------------------------|
| A | 2014-10-06 02:00:00.000 | 2014-10-06 03:00:00.000 | 2014-10-06 05:00:00.000 |
| B | NULL | 2014-10-06 06:00:00.000 | NULL |
가 어떤 방법 내가 따라야
내가 얻을 어떤 방향을 발굴해야
과 같아야 만...
FROM Table T
JOIN Table T2 ON
(T.Contributor = T2.Contributor
AND T.Happened < T2.Happened
AND T2.Status = 1
AND T1.Status = 0)
JOIN Table T3 ON
...
같은 조인 여러했다 결과는 원하는가? 특정 유형의 참여 (예 : 완전 외부 참여)를 사용해야합니까?
나는 MS SQL Server 2008을 사용하고 있는데, 나는 "엔터프라이즈 및 물건"이라는 이유로이 버전에 묶여 있기 때문에 새로운 버전으로 업그레이드하는 것이 쉽지 않습니다. 나는 상태 만 증가한다고 가정하면
사용하는 SQL 서버의 어떤 버전 :
상관 하위 쿼리의 모습? –
MS SQL Server 2008. –