변수 시간을 기준으로 열을 할당하는 데 도움이 필요함여보세요,
기존 datetime 열인 LadleOpenTime (ladleopentimes의 작은 하위 집합이 아래에 나와 있음)을 기반으로하는 내 데이터 테이블 'Crew'에 새 열을 만들려고합니다.
대원 (A, B, C 또는 D 스윙 교대)의 시간은 아래 Excel 표에 표시된 고정 일정을 따릅니다.
일정은 7 일, 2 일, 7 일, 2 일, 7 일이며, 각 승무원마다 반복됩니다.
Midnight (오후 11:00 - 오후 7:00), 일 (오전 7:00 - 오후 3:00), 오후 (오후 3:00 - 오후 11:00).
이 코드를 jsl로 코딩 할 수있는 방법이 있습니까?
모든 의견 감사


제목 : Re : Variable Times를 기반으로 컬럼을 할당하는 데 도움이 필요합니다.나는 다음과 같이 당신이 원하는 것을 얻을 것이라고 믿습니다. 당신이해야 할 유일한 일은 Crew C가 Midnights, Crew A는 일, Crew D는 오후, Crew B는 Off 일요일 일을 과거 날짜로 설정하는 것입니다. 이 날짜는 귀하의 패턴에 대한 28 일주기를 시작합니다. 수식은 사이클의 마지막 시작부터 일수를 결정하고 Shift를 결정한 다음 Shift를 조작 한 대원을 찾습니다. 실제 데이터가 없습니다. 그러나이 방법론이 효과적 일 것입니다. 실제 데이터 중 일부와 함께 사용해보십시오. 내 StartingDate 값이 올바르지 않습니다. 위에서 설명한대로 변경해야합니다. "Crew"라는 새 열을 만들어이 공식을 붙여 넣으십시오. 문제가 있으면 응답하고 올바른 StartingDate를 제공하고 LabelOpenTime 열이있는 샘플 데이터 테이블을 첨부하십시오.
If(Row()==1,
groupAschedule = "DOOAAAAAAAOOMMMMMMMOOODDDDDD";
groupBschedule = "ODDDDDDDOOAAAAAAAOOMMMMMMMOO";
groupCschedule = "MMMMMOOODDDDDDDOOAAAAAAAOOMM";
groupDschedule = "AAAOOMMMMMMMOOODDDDDDDOOAAAA";
hourSchedule = "MMMMMMMDDDDDDDDAAAAAAAA";
startingDate = informat("12/31/2017", "M/D/Y");
);
targetTime = :LadleOpenTime;
If(hour(targettime)==23, targetTime=targetTime+in hours(1));
shift = substr(hourSchedule,hour(targetTime)+1,1);
offset = Mod(date difference(startingDate,targetTime,"Day"),28)+1;
If( substr(groupASchedule,offset,1)==shift, theCrew="A",
groupBSchedulesubstr(offset,offset,1)==shift, theCrew="B",
groupCSchedulesubstr(offset,offset,1)==shift, theCrew="C",
groupDSchedulesubstr(offset,offset,1)==shift, theCrew="D"
);
thecrew;
제목 : Re : Variable Times를 기반으로 컬럼을 할당하는 데 도움이 필요합니다.고맙습니다! 그것은 완벽하게 작동했습니다.
제목 : Re : Variable Times를 기반으로 컬럼을 할당하는 데 도움이 필요합니다.: LadleOpenTime 데이터를 보지 않으면 진술에 긍정적이지 않지만 LadleOpenTime 값이 hourSchedule과 일치하지 않는 것 같습니다.
제목 : Re : Variable Times를 기반으로 컬럼을 할당하는 데 도움이 필요합니다.교대가 1 시간 동안 상쇄된다는 사실 때문일 수 있습니까? 즉. 11-7, 7-3, 3-11, 12-8, 8-4, 4-12.
hourSchedule을 "MMMMMMMDDDDDDDDAAAAAAAAM"으로 변경하고 +1 위치에서 시작하도록 시프트를 되돌 렸으며 모두 동일하게 작동했습니다.
답장을 보내 주셔서 감사합니다.
그렉
제목 : Re : Variable Times를 기반으로 컬럼을 할당하는 데 도움이 필요합니다.안녕, 짐
3 회전 역 회전 일정에 대한 새 열을 만들려고합니다. 승무원은 더 이상 존재하지 않으며 A, B 및 C 만 남아 있습니다.
승무원은 7 일마다 자정-> 오후-> 일-> 자정부터 거꾸로 순서대로 회전합니다. 따라서 전체주기는 21 일마다 완료됩니다.
19 일 7 월 1 일, A 승무원은 자정에 있었고 B 승무원은 며칠 동안, C 승무원은 오후에있었습니다.
아래에 표시된 것처럼 이전 수식을 수정하려고했습니다.
D 승무원 일정을 삭제하고 if 문을 연결하고 A, B, C 승무원 일정을 새 일정으로 교체하고 "오프셋"을 조정하여 현재 21 일주기의 마지막 시작 이후 날짜를 확인하고 19/1/1을 입력했습니다. 시작 날짜로 설정하고 시간 (targetTime)에서 +2 위치에서 시작하도록 "shift"를 변경했습니다. 이것은 약간의 시련과 오류가있었습니다.
시간 (targetTime)에서 +2 위치에서 시작하도록 시프트를 변경하면 원래 4crew 스케줄에서 수행 한 것처럼 +1 위치에서 시작하여이 수식이 작동하는 이유를 설명 할 수 있습니까? 미래의 변경 사항을보다 효과적으로 구현할 수 있도록 이것을 더 잘 이해하려고합니다.
감사,
그렉
If( Row() == 1,
groupAschedule = "MMMMMMMAAAAAAADDDDDDD";
groupBschedule = "DDDDDDDMMMMMMMAAAAAAA";
groupCschedule = "AAAAAAADDDDDDDMMMMMMM";
hourSchedule = "MMMMMMMMDDDDDDDDAAAAAAAA";
startingDate = Informat( "7/1/2019", "M/D/Y" );
);
targetTime = :LadleOpenedTime;
If( Hour( targetTime ) == 23,
targetTime = targetTime + In Hours( 1 )
);
shift = Substr( hourSchedule, Hour( targetTime ) + 2, 1 );
offset = Mod( Date Difference( startingDate, targetTime, "Day" ), 21 ) + 1;
If(
Substr( groupASchedule, offset, 1 ) == shift, theCrew = "A",
Substr( groupBSchedule, offset, 1 ) == shift, theCrew = "B",
Substr( groupCSchedule, offset, 1 ) == shift, theCrew = "C"
);
thecrew;