벽에 머리를 대고 나무가 보이지 않아 나무가 보이지 않습니다 ...사용자 정의 캘린더를 사용하는 사이에 여러 행의 날짜가 표시됩니다.
두 개의 테이블이 있습니다. 1. ID 필드, 시작 날짜 및 종료 날짜 열. 2. 날짜 및 근무일 열.
두 번째 달력에서이 날짜를 사용하여 각 행에 대해 두 날짜 사이의 날짜를 계산하면됩니다. Googl'ing은 시작일과 종료일을 기준으로 날짜 표가없는 많은 예제와 많은 예제를 발견했습니다.
된 table_1이 - 모든 ID
id start_date end_date
123 01/01/2013 03/01/2013
456 02/01/2013 08/01/2013
789 06/01/2013 07/01/2013
Table_2에 대한 항목을 포함합니다 - 일상에 대한 항목을 포함
e_day workday
01/01/2013 1
02/01/2013 0
03/01/2013 1
04/01/2013 1
05/01/2013 0
06/01/2013 1
07/01/2013 0
08/01/2013 0
결과 ID 시작일의 종료일의 days_between 123 2013년 1월 1일 03/01/2013 2 456 02/01/2013 08/01/2013 3 789 06/01/2013 07/01/2013 1
1 id의 값을 찾을 수 있습니다.
SELECT COUNT(workday) FROM table_2
WHERE workday = 1 AND cal_day >= '01/01/2013'
AND cal_day <= '03/01/2013';
이 논리를 table_1에 넣는 방법을 모르겠습니다. bodged 예를 들어 테이블을 생성 (분명히 정확하지)
SELECT
table_1.id,
table_1.start_date,
table_1.end_date,
(COUNT(table_2.workday) FROM table_2 WHERE table_2.workday = 1
AND table_2.e_day >= table_1.start_date
AND table_2.e_day <= table_2.end_date) AS days_between
FROM table_1
코드 IE;
CREATE TABLE #table_1(id INT, start_date SMALLDATETIME, end_date SMALLDATETIME);
CREATE TABLE #table_2(e_day SMALLDATETIME, workday BIT);
INSERT #table_1 VALUES (123,'01/01/2013','03/01/2013')
INSERT #table_1 VALUES (456,'02/01/2013','08/01/2013')
INSERT #table_1 VALUES (789,'06/01/2013','07/01/2013')
INSERT #table_2 VALUES ('01/01/2013',1)
INSERT #table_2 VALUES ('02/01/2013',0)
INSERT #table_2 VALUES ('03/01/2013',1)
INSERT #table_2 VALUES ('04/01/2013',1)
INSERT #table_2 VALUES ('05/01/2013',0)
INSERT #table_2 VALUES ('06/01/2013',1)
INSERT #table_2 VALUES ('07/01/2013',0)
INSERT #table_2 VALUES ('08/01/2013',0)
SELECT * FROM #table_1
SELECT * FROM #table_2
테이블을 제거하는 코드.
DROP TABLE # table_1 DROP TABLE # table_2;
감사합니다 당신이 사전 :
를 볼 수 있습니다 작동하기 전에 workday를 int로 변환하십시오. – JMK
나는 이것을 완전히 이해하지 못한다고 고백해야하지만 정확히 묻는다. 고맙습니다! –
감사합니다. 스파키.스폿 답변과 나는 심지어 지금 그것을 이해한다! 도움을 많이 주셔서 감사합니다. –