2013-02-01 4 views
0

this과 같은 비슷한 질문이 있지만 나에게 맞지 않을 수 있습니다. 어쩌면 제가 여러 테이블에 참여할 수 있기 때문일 수 있습니다.그룹 별 쿼리에 누락 된 주 포함

DECLARE  @StartDate datetime2, @EndDate datetime2; 
SET  @StartDate = DateAdd(day, -7, GETDATE()); 
SET  @EndDate = DateAdd(year, 1, GETDATE()); 

WITH Weeks AS 
(
     SELECT @StartDate AS WeekDate 
     UNION ALL 
     SELECT DATEADD(day, 7, WeekDate) 
     FROM Weeks 
     WHERE DATEADD(day, 7, WeekDate) <= @EndDate 
) 
SELECT  WeekDate AS WeekOfSRUs 
      ,ISNULL(COUNT(i.incident_id), 0) AS SRUCount 
      --,i.incident_id 
      ,ic.inc_cat_sc 
FROM  Weeks 
      ,incident i 
      ,JPTSYS_WEB_CUST_PROP_CONT 
      ,JPTSYS_WEB_CUST_PROP 
      ,JPTSYS_WEB_LKUP_DATA 
      ,JPTSYS_WEB_LKUP 
      ,JPTSYS_WEB_CUST_PROP_MULT 
      ,inc_cat ic 
WHERE  (i.INCIDENT_ID=JPTSYS_WEB_CUST_PROP_CONT.ENTITY_ID AND 
      JPTSYS_WEB_CUST_PROP_CONT.JPTSYS_WEB_CUST_PROP_ID=JPTSYS_WEB_CUST_PROP.JPTSYS_WEB_CUST_PROP_ID AND 
      JPTSYS_WEB_CUST_PROP_CONT.SINGLE_SEL_VAL_ID=JPTSYS_WEB_LKUP_DATA.JPTSYS_WEB_LKUP_DATA_ID AND 
      JPTSYS_WEB_CUST_PROP.JPTSYS_WEB_LKUP_ID=JPTSYS_WEB_LKUP.JPTSYS_WEB_LKUP_ID AND 
      JPTSYS_WEB_LKUP_DATA.JPTSYS_WEB_LKUP_DATA_ID=JPTSYS_WEB_CUST_PROP_MULT.JPTSYS_WEB_LKUP_DATA_ID AND 
      JPTSYS_WEB_CUST_PROP.JPTSYS_WEB_CUST_PROP_ID =59) AND 
      (JPTSYS_WEB_CUST_PROP_CONT.DATE_VAL >= WeekDate AND JPTSYS_WEB_CUST_PROP_CONT.DATE_VAL < DATEADD(day, 7, WeekDate)) AND 
      (inc_cat_sc = 'R1A DESKTOPMIN' OR inc_cat_sc = 'R1B DESKTOPMAJ' OR inc_cat_sc = 'R8A CRTPATCH-DT') AND i.inc_cat_id = ic.inc_cat_id 
GROUP BY ic.inc_cat_sc, Weeks.WeekDate 
ORDER BY Weeks.WeekDate 

결과 : 여기

어느 쪽이든 내 쿼리입니다 참조 된 모든 테이블에 관해서는

WeekOfSRUs     SRUCount inc_cat_sc 
2013-01-25 10:06:57.2370000 4  R1A DESKTOPMIN 
2013-01-25 10:06:57.2370000 1  R1B DESKTOPMAJ 
2013-02-01 10:06:57.2370000 4  R1A DESKTOPMIN 
2013-02-08 10:06:57.2370000 2  R1A DESKTOPMIN 
2013-02-08 10:06:57.2370000 1  R1B DESKTOPMAJ 
2013-02-15 10:06:57.2370000 3  R1A DESKTOPMIN 
2013-02-15 10:06:57.2370000 2  R1B DESKTOPMAJ 
2013-02-15 10:06:57.2370000 2  R8A CRTPATCH-DT 
2013-02-22 10:06:57.2370000 3  R1A DESKTOPMIN 
2013-02-22 10:06:57.2370000 4  R1B DESKTOPMAJ 
2013-03-01 10:06:57.2370000 5  R1A DESKTOPMIN 
2013-03-08 10:06:57.2370000 4  R1A DESKTOPMIN 
2013-03-15 10:06:57.2370000 2  R8A CRTPATCH-DT 
2013-03-22 10:06:57.2370000 1  R1A DESKTOPMIN 
2013-03-29 10:06:57.2370000 1  R1B DESKTOPMAJ 
2013-05-03 10:06:57.2370000 1  R1B DESKTOPMAJ 
2013-05-10 10:06:57.2370000 1  R1A DESKTOPMIN 

이 우리가 사용하도록 강요하고 통제 할 수없는 계약 된 제품 데이터베이스 설계/스키마 설치 후 추가 된 사용자 정의 필드이기 때문에 필요한 특정 필드를 얻으려면이 조인이 필요하다고 들었습니다.

위에서 게시 한 링크에서 LEFT JOIN에 대한 내 쿼리가 수정되었지만 여전히 동일한 결과가 나타납니다.

저는 중급/고급 SQL에 익숙하지 않습니다. 정보를 빠뜨린 경우 기꺼이 추가하여 작동하도록하십시오.

감사합니다.

답변

0

당신이 기대하는 결과를 분명히 해줄 수 있습니까? inc_cat_sc마다 매주 기다리고 있습니까? 그렇다면보고있는 날짜 기간 동안 모든 주에 가입하고 where 절을 사용하여 개수를 산출해야합니다.

+0

예 모든 inc_cat_sc에 대해 매주 찾고 있습니다. 나는 십자가에 조인하는 방법에 익숙하지 않습니다, 당신은 모범을 보여줄 수 있습니까? –

0

당신은 외부에 참여하게해야하는

계수 (i.incident_id)가 0

인 경우를 포함하여 모든 "ic.inc_cat_sc"

매주하려면 "IC inc_cat"

AND i.inc_cat_id = ic.inc_cat_id 

AND i.inc_cat_id =* ic.inc_cat_id 
에 대한 변경 시도

inc_cat_sc는 ic.inc_cat_sc의 오른쪽 열입니까?

+0

이렇게하면 ANSI가 아닌 외부 조인 연산자를 사용하는 데 오류가 발생합니다. 포함 된 다른 모든 테이블과 함께 외부 조인을 작성하려면 어떻게해야합니까? –