문제를 설명하는 데 훨씬 간단한 방법이있는 것 같습니다. 샘플 표 다음에있는 편집 2를 참조하십시오.데이터에 실행 번호가없는 경우 실행별로 그룹화 (생산 실행 길이 변경으로 인해 빌드 시간에 미치는 영향 표시)
저는 생산 라인에서 다양한 제품을 보유하고 있습니다. 각 제품이 생산에 들어간 날짜가 있습니다. 각 제품에는 두 개의 식별자가 있습니다. 품목 번호와 일련 번호 품목 번호와 일련 번호별로 각 제품의 총 노동 시간이 있습니다 (즉, 제조 된 각 객체에 얼마나 많은 시간이 들어 왔는지, 그리고 평균 빌드 시간 시간은 각 종류의 객체에 대한 것입니다).
생산 실행 시간을 변경하는 방법이 제품을 만드는 데 걸리는 평균 시간 (항목 번호)에 영향을 미치는 방식을 결정하고 싶습니다. 생산 실행은 단일 품목 번호에 대해 여러 일련 번호를 순차적으로 생산하는 것입니다. 우리는 1 년에서 30 년까지 다양한 생산 작업을 통해 수년간의 역사적인 기록을 가지고 있습니다.
나는 이것을 달성하기 위해 '실행 ID'를 할당 할 수 있어야한다고 생각합니다. 나에게 이것은 시작 날짜별로 정렬하고 항목 번호가 변경 될 때마다 새로운 고유 값을 계산하는 쿼리를 만드는 것을 의미합니다. 그렇게하는 방법을 알고 있다면, 나머지 문제는 스스로 해결할 수 있습니다. 내가 올바른 방법이 생각
- 암 :
은 그래서 관련된 일련의 질문을 제시?
- 내가 올바른 길을 가고있다면 어떻게 그 id 값을 생성 할 수 있습니까? 직접 쿼리에 대한 선호도가 잘못되었지만 계산 및 저장은 옵션입니다. Excel에서 실행 번호를 생성하는 방법을 정확히 알고 있지만 데이터베이스에서이 작업을 수행하는 데 잘못된 (?) 환경 설정이 있습니다.
- 내가 옳은 길을 걷지 않는다면, 그 길은 어디에서 찾을 수 있습니까? :)
편집 : 샘플 데이터 간체 테이블 구조는 :
AutoID Item Serial StartDate Hours RunID (proposed calculation) 1 Legend 1234 2010-06-06 10 1 3 Legend 1235 2010-06-07 9 1 2 Legend 1237 2010-06-08 8 1 4 Apex 1236 2010-06-09 12 2 5 Apex 1240 2010-06-10 11 2 6 Legend 1239 2010-06-11 10 3 7 Legend 1238 2010-06-12 8 3
I 직렬 그 시작일 도시했으며 autoID 서로 무관하다. 나는 달리기가 길어짐에 따라 노동량이 감소 할 것이라는 기대를 보였다. (그러나 이것은 데이터 분석이 아닌,받은 지혜를 통해서만 '사실'이다.) 필자는 솔루션의 핵심으로 생각한 것을 보여주었습니다. 단일 항목의 순차적 빌드를 반영하는 RunID입니다. 그 runID를 얻을 수 있다면, 카운트, 평균, 합계, 최대, 최소 등을 얻기 위해 뛰기로 그룹화 할 수 있다는 것을 알고 있습니다. 또한 실행 시작부터 퍼센트 변경을 할 수 있습니다. 이 시점에서 나는 모든 아이템에 대해 전 세계적으로 또는 아이템별로 각기 다른 런 길이와 연관된 경향을 그래프로 나타낼 수 있습니다. (적어도 나는 모든 것을 할 수 있다고 생각한다. 조금은 진절머리가 나야하지만, 나는 그것을 끝낼 수 있다고 생각한다.)
편집 2 :이 문제는 다음과 같이 보일 것이다. runID가 없으면 각 실행의 'member (가장 빠른 시작 날짜)'를 시작 하시겠습니까? 합니다 (runID가 존재하지 않습니다 샘플 표에 나타난 나는 원래 runID을 계산 할 수있는 것은 잠재적으로 실행 가능한 해결책이라고 제시했다.)
AutoID Item 1 Legend 4 Apex 6 Legend
내가의 첫 번째 멤버를 찾는 방법을 배운 겠지 각각의 실행은 내가 각 실행의 마지막 멤버를 찾은 다음이 두 결과를 사용하여 각 실행의 다른 모든 멤버를 얻는 방법을 배웠습니다.
편집 3 : 실행중인 모든 항목의 RunID로 실행중인 첫 번째 항목의 AutoID를 사용하는 쿼리의 편집 버전입니다.이것은 받아 들여진 대답이있는 Simon에 의해 제공된 견본과 방향에서 전체로 건설되었다. 이것을 실행별로 그룹화하는 기초로 사용하여 다양한 실행 통계를 생성 할 수 있습니다.
FROM runID, run_sibling.AutoID AS 항목 ID, run_sibling.Item, run_sibling.Serial, run_sibling.StartDate, run_sibling.Hours AS SELECT first_product_of_run.AutoID (first_of_run.AutoID, first_of_run.Item, first_of_run.Serial, first_of_run.StartDate를 선택 , dbo.production FROM first_of_run.Hours 는 AS first_of_run LEFT OUTER는 dbo.production 가입 earlier_in_run ON first_of_run.AutoID AS - 1 = earlier_in_run.AutoID AND first_of_run.Item = earlier_in_run.Item WHERE (earlier_in_run.AutoID가 NULL)) AS first_product_of_run LEFT OUTER JOIN dbo.production AS run_sibling ON first_product_of_run.Item = run_sibling.Item AND first_product_of_run.AutoID run_sibling.AutoID AND first_product_of_run.StartDate product_between.Item AND first_product_of_run.StartDate
@ 시몬 : 표 구조 및 추가 설명에 대한 편집 내용을 참조하십시오. 내가 주어진 항목의 첫 번째와 마지막 날짜를 식별하는 방법을 알고 있지만 주어진 run에 대한 항목을 검색하는 방법을 모르겠다. 왜냐하면 주로 runID가 없기 때문이다. – jadero
실행 ID가 순차적 일 필요가 없다면 실행중인 첫 번째 제품의 AutoID를 사용하는 것이 좋습니다. – Simon
@ 시몬 : 당신은 제가 물어야 할 질문을 정확히 볼 수있게 도와주었습니다 : 어떻게 각각의 실행의 '시작 멤버'를 식별합니까? (나는 'finishing member'를 얻고 결과를 결합하여 각 멤버를 얻는 것을 쉽게 수정할 수 있다고 가정합니다.) Edit 2 – jadero