아래 쿼리는 완벽하게 작동하지만 내가 위의 쿼리의 출력어떻게 시간의 합으로 한 열을 검색 할 수
SELECT
USERINFO.name, USERINFO.BADGENUMBER,
departments.deptname, APPROVEDHRS.hours,
sum(workingdays) as workingdays,TotalWorkingDays
FROM
(SELECT DISTINCT
(DATEDIFF(DAY, '2014-06-01', '2014-06-30') + 1) -
DATEDIFF(WEEK, '2014-06-01', '2014-06-30') * 2 -
(CASE WHEN DATEPART(WEEKDAY, '2014-06-01') = 5 THEN 1 ELSE 0 END) -
(CASE WHEN DATEPART(WEEKDAY, '2014-06-30') = 6 THEN 1 ELSE 0 END) AS TotalWorkingDays,
COUNT(DISTINCT DATEADD(d, 0,DATEDIFF(d, 0, CHECKINOUT.CHECKTIME))) AS workingdays,
USERINFO.BADGENUMBER, USERINFO.NAME, hours
FROM
USERINFO
LEFT JOIN
CHECKINOUT ON USERINFO.USERID = CHECKINOUT.USERID
LEFT JOIN
departments ON departments.deptid = userinfo.DEFAULTDEPTID
left join APPROVEDHRS on APPROVEDHRS.userid = userinfo.userid AND
(APPROVEDHRS.DATE >='2014-06-01') AND (APPROVEDHRS.DATE <='2014-06-30')
WHERE
(DEPARTMENTS.DEPTNAME = 'xyz')
AND (CHECKINOUT.CHECKTIME >= '2014-06-01')
AND (CHECKINOUT.CHECKTIME <= '2014-06-30')
GROUP BY
hours, USERINFO.BADGENUMBER, deptname, USERINFO.NAME,
CONVERT(VARCHAR(10), CHECKINOUT.CHECKTIME, 103)) blue
GROUP BY
name, BADGENUMBER, workingdays, TotalWorkingDays, deptname, hours
을 원하지 않는 시간의 두 행 반환 :
name BADGENUMBER deptname hours
---------------------------------------------------
abc 1111 xyz 00:07:59
abc 1111 xyz 00:08:00
pqr 2222 qwe NULL
을
이제 테이블의 총 시간 (APPROVEDHRS
표)입니다 : 나는 2014-06-01 20 레코드를 가져 오는하고
BADGENUMBER NAME DATE HOURS
-------------------------------------------------
1111 xyz 2014-06-15 00:07:59
1111 xyz 2014-06-14 00:08:00
1111 xyz 2014-07-14 00:10:00
14-06-30 그래서 나는 아래의 출력을 원하는 :
name BADGENUMBER deptname hours
--------------------------------------------------------
abc 1111 xyz 00:15:59
pqr 2222 qwe NULL
도움말 날이 원하는 출력을 얻을 수 있습니다.
고맙습니다.
귀하의 출력이 쿼리와 일치하지 않습니다보십시오. 'select'는 샘플 출력보다 많은 컬럼을 가지고 있습니다. –
@GordonLinoff. 출력에 다른 열을 표시하지 않았습니다. 그러나 내 쿼리에 있습니다. –
SQL Server에는 'time' 데이터 형식이 있지만 이것은 시간 간격 *이 아닌 * 시간을 나타냅니다. 둘 다 종종 똑같이 보일 수 있지만 논리적으로 전혀 다른 것입니다. 처음에는 하루에 두 번을 추가하는 것은 의미가 없습니다 (하루의 시간 간격을 추가하거나 두 시간 간격을 함께 추가하는 것이 좋습니다). 가장 정 확한 일은 시간, 분 또는 초로 작업 할 세분성을 결정하고 데이터를 세분화 된 총계를 나타내는'int's로 변환 한 다음'int'만으로 작업합니다. –