저는 SQL (~ 9 개월 정도)에 대해 상당히 익숙하므로 SQL을 사용하여이 문제를 파악하려고 노력하는 것입니다. 서버 2012날짜를 기준으로 두 SQL 테이블을 일치해야하지만 날짜 + 1을 확인해야합니다.
I는 다음과 같이 두 개의 테이블이 일치하기 위해 노력하고있어 :
표 Shift
:
Date | Name | Shift
01-01-2013 | Dan Smith | Night
01-02-2013 |John Johnson| Night
01-03-2013 |John Johnson| Night
표 Sales
:
Date | Name | Sales
01-01-2013 | Dan Smith | 3
01-02-2013 | Dan Smith | 5
01-02-2013 |John Johnson| 4
01-03-2013 |John Johnson| 7
01-04-2013 |John Johnson| 2
을
문제는 근무 교대가 근무일 시작 날짜 만 포함한다는 것입니다.이 교대 근무일은 2 일 동안 발생하는 야간 근무에 문제가 있습니다. 밤 근무 시간의 판매는 발생했을 때 시간 소인이 찍히는 양일에 걸쳐 발생하는 것으로 나타납니다. 즉, 단순히 이름과 이동 날짜를 기반으로 테이블을 연결하려고 시도하고 그 사람이 다음날 근무를하지 않으면 12:00 AM 이후에 판매 데이터를 놓치게됩니다. 그 사람이 다음날 근무를 확인하는 방법을 찾고 있는데, 그렇지 않은 경우 다음날 판매 데이터를 전날 판매액에 추가합니다.
는 지금 내 코드는 다음과 같습니다
Select
st.Name,
st.Date,
st.Shift,
sl.Sales
From
Shift st
right join
Sales as sl on sl.Name = st.Name
and sl.Date = Case
When sl.Date = DATEADD(DD, 1, st.Date)
Then DATEADD(DD,1, st.Date)
Else st.Date
End
단순히 sales.date = shift.date 사용하는 경우에서 누락 된 데이터를 집어 들고, 그러나 또한 중복 데이터의 많은 끝있다. 죄송합니다. 간단하지만 영업 사원이 다음날 근무하지 않았는지 단순히 확인하고 그 사람의 다음 영업 데이터를 이전 날짜에 추가하는 좋은 방법을 파악하지 못했습니다.
편집 : 원하는 결과는 다음과 같이 보일 것이다 :
ShiftDate | Name | Shift | Sales
01-01-2013 | Dan Smith | Night | 8
01-02-2013 |John Johnson| Night | 4
01-03-2013 |John Johnson| Night | 9
정확한 당 변화 판매량이 100 % 정확하지 않으면 난 정말 상관 없어,하지만 내가 데리러 필요가 않습니다 다음날 영업 데이터가없는 경우 다음날 근무 데이터가 없습니다.
나는이 문제를 절대적으로 해결할 것이므로 잠시 동안 모델 변경을 좋아할 것입니다. 불행히도 판매 데이터는 외부 소스에서 가져온 데이터를 데이터베이스로 가져 와서 현재까지는 정확한 타임 스탬프를 제공하지 못하고 있습니다.
Yakshemash! 너는 이제 더 이상 새로운 것이 아니다. 난 단지 3 개월 동안 SQL을 수행 :) 귀하의 DB는 모든 타임 스탬프를 포함해야합니다. –
원하는 결과를 게시 할 수 있습니까? – Lamak
존 존슨이 판매 한 '01-03-2013' 판매 방법을 어떻게 알 수 있습니까? 당신은'01-03-2013' 교대로 보여주고 있지만, '01-02- 2013' 자신의 규칙에 의해 – Lamak