2012-05-24 5 views
1

동일한 쿼리의 여러 인스턴스를 실행 중입니다. 아래 버전은 데이터를 반환하지 않아야하지만 각 컬럼에 '널'1 개 행을 얻고있다 : 나는 유효한 값이 존재하는 경우 난 단지 데이터를 반환하고 있는지 확인이 쿼리를 수정하는 방법데이터가 없을 때 쿼리 반환 1 행

SELECT (CASE ScanName WHEN 'SYSTEM-HQ' THEN 'HQ 
System' END) AS System, 
sum(CASE pspplMSSeverity WHEN 1 THEN 10 WHEN 2 THEN 9 WHEN 
3 THEN 6 WHEN 4 THEN 3 END) AS Score, 
(sum(CASE pspplMSSeverity WHEN 1 THEN 10 WHEN 2 THEN 9 
WHEN 3 THEN 6 WHEN 4 THEN 3 END)/COUNT(pspplMSSeverity)) AS 
Grade 
FROM missingpatches 
WHERE ScanName like '%SYSTEM-HQ%' 
ORDER BY LAST_UPDATE DESC LIMIT 1 

을 ?

Null 데이터가 반환되는 주 SQL 문에서 Case와 Sum을 사용했기 때문일 수 있습니까?

답변

1
SELECT (CASE ScanName WHEN 'SYSTEM-HQ' THEN 'HQ 
System' END) AS System, 
sum(CASE pspplMSSeverity WHEN 1 THEN 10 WHEN 2 THEN 9 WHEN 
3 THEN 6 WHEN 4 THEN 3 END) AS Score, 
(sum(CASE pspplMSSeverity WHEN 1 THEN 10 WHEN 2 THEN 9 
WHEN 3 THEN 6 WHEN 4 THEN 3 END)/COUNT(pspplMSSeverity)) AS 
Grade 
FROM missingpatches 
WHERE ScanName like '%SYSTEM-HQ%' 
HAVING System IS NOT NULL # Added 
ORDER BY LAST_UPDATE DESC LIMIT 1 

HAVING을 추가해보세요.

+0

이것은 정확히 내가 필요한 것입니다. % SYSTEM-HQ %와 같은 ScanName이 NULL이 아닌 곳에서 시도했습니다. 고맙습니다. – Ben

0

대부분의 아마 테이블 missingpatches은 'SYSTEM-HQ'하지만이 포함되어 ScanName와

WHERE ScanName like '%SYSTEM-HQ%' 

즉 행을 만족 한 행을 포함 정확히 동일한 경우 당신은에서와 동일시된다 'SYSTEM-HQ' select 첫 번째 col.

SQL에서는 테이블이 조인되고 where 절이 평가 된 후 열이 평가됩니다. 따라서보고있는 행은 실제로 where 절 조건을 충족합니다.

관련 문제