2012-02-14 2 views
1

아래 쿼리 (그 중 일부)가 있습니다. GridView에이 쿼리가로드 될 때 IssCountUsedCount 값이없는 행은 비워 둡니다. 어떻게 이러한 레코드에 대해 이러한 열의 기본값을 0으로 설정할 수 있습니까?0을 기본 카운트 값으로 사용합니다.

SELECT 
    CASE 
    WHEN @SortByTypeCode = 1 THEN ROW_NUMBER() OVER(ORDER BY vt.Code) 
    WHEN @SortByTypeName = 1 THEN ROW_NUMBER() OVER(ORDER BY vt.Name)    
    WHEN @SortByTypeIssued = 1 THEN ROW_NUMBER() OVER(ORDER BY count(X.IssCount)) 
    WHEN @SortByTypeUsed = 1 THEN ROW_NUMBER() OVER(ORDER BY count(Y.UsedCount)) 
    ELSE ROW_NUMBER() OVER(ORDER BY vt.AutoID) 
    END AS RowNum 
    ,vt.AutoID 
    ,vt.Code 
    ,X.IssCount as Issued 
    ,Y.UsedCount as Used 
INTO #tmp_Results --Dont Change This 
FROM VoucherType vt 
LEFT JOIN (
    SELECT VoucherType_AutoID,COUNT(VoucherNo) IssCount 
    FROM Voucher 
    WHERE VoidedBy IS NULL AND VoidedOn IS NULL 
    GROUP BY VoucherType_AutoID  
) X ON vt.AutoID = X.VoucherType_AutoID 
LEFT JOIN (
    SELECT V.VoucherType_AutoID, COUNT(VUsed.AutoID) UsedCount 
    FROM voucherUsedLog VUsed 
    INNER JOIN Voucher V ON VUsed.Voucher_AutoID = V.AutoID 
    WHERE VUsed.VoidedBy IS NULL AND VUsed.VoidedOn IS NULL 
    GROUP BY V.VoucherType_AutoID 
) Y 
ON vt.AutoID = Y.VoucherType_AutoID 

답변

3

당신은 단지 포장 할 수있는 COALESCE 주위 X.IssCountY.UsedCount은과 같이, 그들에게 공을 만들려면 :

,COALESCE(X.IssCount,0) as Issued 
,COALESCE(Y.UsedCount,0) as Used 
3

이 방법을 시도 ..

ISNULL(X.IssCount,0) as Issued 
,ISNULL(Y.UsedCount,0) as Used 
관련 문제