서비스 코드 별로 일단가 적용하는 것과 시간단가 적용하는 부분이 있는데요.
A란 서비스를 했을 경우 하루에 일한 시간이 8시간 이상이면 일단가를 미만이면 시간단가를 적용시키려고 합니다.
B란 서비스를 했을 경우에는 시간에 상관없이 시간단가만 적용을 하려고 합니다.
사용자명 서비스명 업무시간 시간단가 일단가
가군 A 10 100 20000
나군 A 7 100 20000
다군 B 19 200 30000
이렇게 되어있을 경우
정산을 하게 되면
사용자명 서비스명 정산비용
가군 A 20000
나군 A 700
다군 B 38000
이렇게 나오게 하고 싶습니다
Select Case When ... 에 조건을 어떻게 줘야 하는지요?
Comment 5
-
건우아빠
2013.09.03 09:50
-
taz2315
2013.09.03 10:27
서비스가 A 인경우만 해당하고 서비스가 B인경우에는 해당하지 않거든요...
그리고 해당서비스추가 될수 있고..
A, C, D 서비스는 8시간 기준에 적용을 받고,
B, E, F 는 8시간 기준에 적용을 받지 않고.... 그래서 조건이 하나 더 들어가야 합니다.
case when 업무시간 < 8 이고 서비스가 A, C, D 인경우...
-
taz2315
2013.09.03 10:34
(CASE WHEN worktime < 8 and Service1 in ('600','400') THEN worktime * 시간단가 ELSE 일단가 END) AS aa
이렇게 하면 되겠죠?
-
건우아빠
2013.09.03 10:47
네.. 그런 조건이라면 하신 대로 하셔도 되고
case when Service1 in ('600','400') then
(case when 업무시간 < 8 then 업무시간 * 시간단가 else 일단가 end)
else
(.......)
end
-
한태
2016.03.15 19:20
create table service(username varchar(10),servicename varchar(3),worktime int,timepay int,daypay int )insert into service values('가군','A', 10, 100, 20000),('나군','A', 7, 100, 20000),('다군','B', 19, 200, 30000),('라군','C', 6, 100, 30000),('마군','C', 10, 100, 30000),('바군','D', 7, 300, 30000),('사군','D', 10, 200, 30000),('아군','E', 3, 100, 30000),('자군','F', 10, 100, 30000)select * from serviceselect username, servicename, case when servicename in ('A','C','D') and worktime<8 then worktime*timepaywhen servicename in ('B','E','F') then worktime*timepayelse daypay end as 정산비용from service with(nolock)select username, servicename, case when servicename in ('A','C','D') and worktime>8 then daypayelse worktime*timepay end as 정산비용from service with(nolock)case문을 이용하여 같은 조건을 다르게만 표시하였습니다.본인이 보기에 직관적으로 잘 파악할 수 있는 것을 사용하면 될 듯 합니다.
, (case when 업무시간 < 8 then 업무시간 * 시간단가 else 일단가 end) [ 정산비용]