여기 SQL 초보자입니다. 직원 시간표 정보를 출력하고 효과적인 직원 원가 계산률에 따라 비용을 계산하는 원가 계산 쿼리를 생성하려고합니다.비용 날짜를 기준으로 유효한 원가 계산율을 선택하는 SQL 쿼리
내 질문은 여기에있는 질문과 비슷합니다 : Retro-active effective date changes with overlapping dates하지만 역 활동이나 겹치는 기간은 다루지 않습니다.
테이블 예 (레이트 표에 Null 값이 현재 레이트를 나타낸다)
CREATE TABLE Emp_Rate
(
Emp int,
Rate money,
Rate_Start datetime,
Rate_Exp datetime
)
CREATE TABLE Emp_Time
(
Emp int,
Chrg_Date datetime,
Chrg_Code varchar(10),
Chrg_Hrs decimal(8, 2)
)
Insert into Emp_Rate (Emp,Rate,Rate_Start,Rate_Exp) Values ('1','20','5/1/09','4/30/10')
Insert into Emp_Rate (Emp,Rate,Rate_Start,Rate_Exp) Values ('1','21','5/1/10','4/30/11')
Insert into Emp_Rate (Emp,Rate,Rate_Start,Rate_Exp) Values ('1','22','5/1/11',NULL)
Insert into Emp_Time (Emp,Chrg_Date,Chrg_Code,Chrg_Hrs) Values ('1','5/10/09','B','8')
Insert into Emp_Time (Emp,Chrg_Date,Chrg_Code,Chrg_Hrs) Values ('1','5/10/10','B','8')
Insert into Emp_Time (Emp,Chrg_Date,Chrg_Code,Chrg_Hrs) Values ('1','5/10/11','B','8')
쿼리 (복귀 명백하게 다중 레이트 항목 (의한 속는))
Select Emp_Time.Emp,
Cast(Emp_Time.Chrg_Date as DATE) as 'Chrg_Date',
Emp_Time.Chrg_Code,
Emp_Time.Chrg_Hrs,
Emp_Rate.Rate,
Emp_Time.Chrg_Hrs * Emp_Rate.Rate as 'Cost'
From Emp_Time inner join
Emp_Rate on Emp_Rate.Emp = Emp_Time.Emp
Order By [Emp],[Chrg_Date]
원하는 출력 :
Emp Chrg_Date Chrg_Code Chrg_Hrs Rate Cost
1 2009-05-10 B 8.00 20.00 160.00
1 2010-05-10 B 8.00 21.00 168.00
1 2011-05-10 B 8.00 22.00 176.00
나는 연산자로 Between
을 사용하여 주변을 돌아 다녔다. 청구일을 기준으로 올바른 요율을 찾아 내고 행운이 없었던 하위 검색어입니다.
감사합니다.
일을 상세 질문에 대해. 원하는 출력물에 Emp 2가 표시되지만 Emp 1에 대한 입력물은 오타입니다. – Taryn
예, 오타되었습니다! 저의 원래 예에는 두 명의 직원이있었습니다. 수정 됨. – Jaxaeon
데이터베이스 유형으로 질문에 태그를 답니다. MySQL은? – barsju