2014-04-17 4 views
0

CLOSE_DATE 필드 IS NOT NULL 때 작동하고 다음을 선택합니다 :"널 (null)"와 "NOT NULL"

SELECT 
    YEAR (CLOSE_DATE) AS TheYear, 
    MONTH (CLOSE_DATE) AS TheMonth, 
    COUNT (*) AS cnt 
FROM 
    Table1 
WHERE 
    Table1.DEPT = 'SUPPORT' 
GROUP BY 
    YEAR (CLOSE_DATE), 
    MONTH (CLOSE_DATE) 
ORDER BY 
    TheYear DESC, 
    TheMonth DESC 

출력은 다음 CLOSE_DATE 예를 들어,이

+-------------+------+ 
| Year | Month | cnt | 
+-------------+------+ 
| 2014 |  4 | 10 | 
| 2014 |  3 | 9 | 
| 2014 |  2 | 15 | 
| 2014 |  1 | 12 | 
| 2013 | 12 | 10 | 
| 2013 | 11 | 50 | 
+--------------+-----+ 

경우 , 행은 NULL이고, 결과는 다음과 같습니다.

+-------------+------+ 
| Year | Month | cnt | 
+-------------+------+ 
| NULL | NULL | 7 | 
| 2014 |  4 | 10 | 
| 2014 |  3 | 9 | 
| 2014 |  2 | 15 | 
| 2014 |  1 | 12 | 
| 2013 | 12 | 10 | 
| 2013 | 11 | 50 | 
+--------------+-----+ 

,264,734,959,105,323,210는 실제 연도와 월을 위해 계산해야 나타냅니다 때문에 예상 된 결과는 다음과 같아야합니다

+-------------+------+ 
| Year | Month | cnt | 
+-------------+------+ 
| 2014 |  4 | 17 | 
| 2014 |  3 | 9 | 
| 2014 |  2 | 15 | 
| 2014 |  1 | 12 | 
| 2013 | 12 | 10 | 
| 2013 | 11 | 50 | 
+--------------+-----+ 

UPDATE

위의 예제는 더 큰 선택의 한 부분이다. 나는 실제로 열린 사건과 닫힌 사건을 생각해 본다.

티켓에 close_date가 없으면 티켓이 열려 있음을 의미합니다. 그래서 count만큼 닫으십시오. 그것은 open으로 간주됩니다.

셀렉트 오픈 칼럼과 동일하다 :

SELECT 
    YEAR (OPEN_DATE) AS TheYear, 
    MONTH (OPEN_DATE) AS TheMonth, 
    COUNT (*) AS cnt 
FROM 
    Table1 
WHERE 
    Table1.DEPT = 'SUPPORT' 
GROUP BY 
    YEAR (OPEN_DATE), 
    MONTH (OPEN_DATE) 
ORDER BY 
    TheYear DESC, 
    TheMonth DESC 

YEAR (OPEN_DATE) AS TheYear,MONTH (OPEN_DATE) AS TheMonth,open_date 열에서 연도와 월 가져오고있다 그래서 라인,하지만 close_dateis null는 그 줄에 계산하는 경우는 너무.

이렇게하면 close_date에 null 값이있는 모든 행은 open_date으로 처리됩니다.

+0

친구가 있습니까? – AK47

답변

1

Isnull() 함수를 사용할 수 있습니다.이 함수는 null 값이 발생할 때마다 미리 정의 된 다른 값을 허용합니다.

SELECT 
    YEAR (Isnull(CLOSE_DATE,getdate())) AS TheYear, 
    MONTH (Isnull(CLOSE_DATE,getdate())) AS TheMonth, 
    COUNT (*) AS cnt 
FROM 
    Table1 
WHERE 
    Table1.DEPT = 'SUPPORT' 
GROUP BY 
    YEAR (Isnull(CLOSE_DATE,getdate())), 
    MONTH (Isnull(CLOSE_DATE,getdate())) 
ORDER BY 
    TheYear DESC, 
    TheMonth DESC 
+0

AK47, 답장을 보내 주셔서 감사합니다. 그러나 나는 그 예에서 실수를했으며 지금은 그것을 깨달았습니다. 나는 게시물을 업데이 트합니다, 당신이 여전히 도울 수 있기를 바랍니다. – Khrys

+0

다음과 같아야합니다. '사례 (Isnull (YEAR (OPEN_DATE)) 년 (GETDATE()) 그 밖에 YEAR (OPEN_DATE) – Khrys