다음과 같이 내 문제는 다음과 같습니다SQL 서버 SUM DATEDIFF 및 NULL 두 날짜
나는 열이있는 테이블 (라는 테이블)이: ID, 이벤트, STARTDATE를
STARTDATE가는 종료 날짜 1900-01-01에서 현재 날짜까지 enddate도 수행합니다. 이벤트는 임의의 문자열이며 각 ID는 시간이 지남에 따라 여러 이벤트를 시작 및 종료합니다. (한 번에 하나의 이벤트 만 가능합니다.)
1989-01-01에서 2000 사이의 날짜에 대한 레코드를 가져 오는 경우를 고려하십시오. -01-01. 우리는 날짜 사이의 차이점을 합하여 각 ID가 어떤 일을 하느냐에 소비하는 총 주 수를 얻고 싶습니다.
내가 가진 probelm은 아직 어떤 사건이있는 데이터에 epeople이 있다는 것입니다. 자신의 ENDDATE가 null, 그래서에 관심이 있어요.
나는 현재
SELECT
id,
ISNULL(enddate, 2000-01-01 sum(datediff(weeks, startdate, enddate)) AS wksdoingstuff
WHERE
event IN ('something', 'somethingelse'. 'anotherthing')
AND BETWEEN 1989-01-01 AND 2000-01-01
GROUP BY
id
을 시도하고있다
내가 누구인지 후 : 나는 별개의 ID의 행을 원하는
및 각각의 하나는 (그 순간에 내 코드를 그들이 관심
의 사건에 얼마나 많은 주에 해당하는 수를해야합니다 확실히 내가 거기에 쓴) 각 이벤트에 있었던 각기 다른 기간을 합산 한 각 ID에 대해 여러 행을 제공합니다.
당신이 우리를 표시 한 코드를 실행할 수있는 꿈에도 생각하지 않습니다. ** runnable ** 코드의 자체 포함 된 예제를 만들려고합니다. (실제로 몇 줄의 행을 테이블 변수로 채우고 실제로 FROM 절로 쿼리하면 그 부분이 엉망이 되어도 수정됩니다. 'ISNULL' 행 등) –
또한 찾고있는 출력에 대한 명확한 정의를 제공해야합니다. 'DATEDIFF'는 * transition *을 계산하고,'week'보다는'week'를 의미한다고 가정한다면, 첫 번째가 토요일이고 두 번째가 두 번째 일 경우, 단지 하루 간격으로 두 개의 날짜에 대해 1을 반환 할 수 있음을 알아야합니다 일요일입니다. 그것이 당신이 원하는 행동입니까? * 부분적 * 주를 고려해야합니까? –
예, 부분적인 동작은 분석에 적합합니다. 또한 데이터가 올바른지 항상 확인할 수 있습니다. 내 코드가 실행되지 않는 것으로 알고 있습니다. 서버에 액세스 할 수있는 컴퓨터가 아니며 인터넷에 접속할 수 없을 때 답변에 대한 메모를 작성하고 신청해야합니다. 그것. –