뜻 가정 연속 다음 등 라인 1, 2, 3, 4, 5 ... 등을하지 1, 3, 5, 8, 12,
, 당신이 필요하지 않은 경우 그것이 연속 기록하는 쌍 알고 :
Select case when exists
(Select * from table f
join table n
on n.Wk_Num = f.Wk_Num + 1
and n.NET_SPRD_LCL > 3500
and f.NET_SPRD_LCL > 3500
and n.Wk_Num < 27
then 2000 else null end
당신이 기록의 쌍을 식별해야하는 경우, 다음 : 단순히 증가 연속 경우 반면에
Select f.wk_Num firstWorkNbr, f.NET_SPRD_LCL firstNetSpread,
n.wk_Num nextWorkNbr, n.NET_SPRD_LCL nextNetSpread
from table f
join table n
on n.Wk_Num = f.Wk_Num + 1
and n.NET_SPRD_LCL > 3500
and f.NET_SPRD_LCL > 3500
and n.Wk_Num < 27
Where not exists
(Select * from table f0
join table n0
on n0.Wk_Num = f0.wk_Num + 1
and n0.WkNum < f.Wk_Num))
를, 다음입니다 조금만 der. 당신은 ... 다음 연속 기록을 결정하기 위해 하위 쿼리를 사용하는
Select case when exists
(Select * from table f
join table n
on n.Wk_Num = (Select Min(Wk_Num) from table
Where Wk_Num > f.Wk_Num)
and n.NET_SPRD_LCL > 3500
and f.NET_SPRD_LCL > 3500
and n.Wk_Num < 27
then 2000 else null end
을 필요로하고 끝에 2000 (자격 레코드의 특정 첫 번째 쌍에 대한 데이터를 가져 오기 위해 필요한 경우 불필요한 경우 이후가 어떤 자격 쌍 아무것도 반환되지 않습니다됩니다.) 모든
Select f.wk_Num firstWorkNbr, f.NET_SPRD_LCL firstNetSpread,
n.wk_Num nextWorkNbr, n.NET_SPRD_LCL nextNetSpread, 2000 outValue
from table f
join table n
on n.Wk_Num = (Select Min(Wk_Num) from table
Where Wk_Num > f.Wk_Num)
and n.NET_SPRD_LCL > 3500
and f.NET_SPRD_LCL > 3500
and n.Wk_Num < 27
Where not exists
(Select * from table f0
join table n0
on n0.Wk_Num = (Select Min(Wk_Num) from table
Where Wk_Num > f0.Wk_Num)
and n0.WkNum < f.Wk_Num))
@CharlesBretana는 주 번호 일 수 있습니다. –
"연속"이라는 말은 1,2,3,4 등과 같이 순서대로 다음을 의미합니다. 그렇다면 두 작업 번호가 어떻게 동일하면 연속적으로 작동합니까? (하나 이상의 레코드에서 동일한 값을 가져야하는 그룹으로 묶기 위해) 당신은 분명히 직장 번호가 아닌 다른 것을 기반으로하는 연속을 의미합니다. 연속을 정의하는 것은 무엇입니까? 어떤 타임 스탬프? 삽입 된 각 레코드에 대해 숫자 키가 하나씩 증가합니까? 뭐? –
2000 년은 어디에서 왔습니까? 테이블에있는 데이터와 관련이없는 것 같습니까? 그래서이 경우 실제로 어떤 쌍이 식별되는지는 중요하지 않습니다. –