사용자가 한 달을 클릭하면이 저장 프로 시저가 실행됩니다. 예약 된 총 시간과 필터링 된 그룹을 확인합니다.여러 날짜 범위를 기준으로 필터링 하시겠습니까?
SELECT
tsks.grouping_ref, ttg.description AS grouping_desc,
SUM(ts.booked_time) AS booked_time_total,
DATENAME(MONTH, ts.start_dtm) + ' ' + DATENAME(YEAR, ts.start_dtm) AS month_name,
@month_ref AS month_ref
FROM
timesheets ts
JOIN
timesheet_categories cat ON ts.timesheet_cat_ref = cat.timesheet_cat_ref
JOIN
timesheet_tasks tsks ON ts.task_ref = tsks.task_ref
JOIN
timesheet_task_groupings ttg ON tsks.grouping_ref = ttg.grouping_ref
WHERE
ts.status IN(1, 2) --Booked and approved
AND cat.is_leave_category = 0 --Ignore leave
AND DATEPART(YEAR, ts.start_dtm) = @Year
AND DATEPART(MONTH, ts.start_dtm) = @Month
GROUP BY
tsks.grouping_ref, ttg.description,
DATENAME(MONTH, ts.start_dtm),
DATENAME(YEAR, ts.start_dtm)
ORDER BY
grouping_desc
내가 여러 날짜 범위에 따라 필터링 할 :
| Job Group | Month Booked | Time (hrs) |
Cleaning Jan 7
나는 다음과 같은 SQL이있다.
AND ((ts.start_dtm BETWEEN '2011-12-28' AND '2012-01-01')
OR (ts.start_dtm BETWEEN '2012-01-02' AND '2012-01-29'))
를하지만 그때는 사용자가 여전히이 OR 문을 수행하므로 모든 레코드를 보여줄 것입니다 클릭 몇 월 중요하지 것이다 실현 :
나는이를 추가하는 방법에 대해 생각했다. 내가 필요로 무엇는 month_ref 기반으로 뭔가 예입니다 :
CASE WHEN @month_ref = 81201 THEN
AND (ts.start_dtm BETWEEN '2011-12-28' AND '2012-01-01')
END
그러나 case 문은 WHERE 절 이후에 갈 필요가있다.
2012 년 회계 연도가 약 12 개월이므로 사용자가 3 월을 클릭하면 올바른 필터가 실행되도록 사례 명세서로 추가해야합니다. 데이터베이스 ts.start_dtm
에서
은 다음과 같습니다 : 내 첫 번째 게시물에 대한 충분한 정보했다
2011-04-01 00:00:00.000
희망?
나는 진술서를 쓰고 있는데, 여기에 몇 시간 동안 노력하고있다.
당신이 도움이 될 수 있습니다 희망 :
감사를 두 날짜를 검색 할 다른 방법이 참조 테이블에 가입하거나 수 ? –
이 예에서는 임시 테이블을 사용하여 쿼리가 yes에 대해 실행될 날짜를 저장합니다. 삽입 문이 작동하도록 영구 테이블을 만들 필요가 있습니다. (아직 가지고 있지 않다는 가정하에) – u07ch
내 저장 프로 시저가 관리 스튜디오에서 작동하는 것으로 보이지만 웹 사이트가 DATE BETWEEN을 좋아하는 것 같습니다. 어떤 아이디어? –