2014-06-10 1 views
0

하위 쿼리에서 두 개의 열을 나누는 데 문제가 있습니다. 반환되는 유일한 대답은 0입니다. 두 개의 열을 곱한 후 제대로 작동하는지 확인하려고했습니다. 나는 그 문제가 무엇인지 알 수 없다.파생 된 순위 나누기, 하위 쿼리의 열 개수 백분위 수

SELECT cert, repdte, NAMEFULL, Rnk, Cnt, (Cnt - Rnk)/Cnt as 'Perc' 
FROM 
(
    SELECT STRU.cert, STRU.repdte, STRU.NAMEFULL, 
    CASE 
     WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL 
     ELSE (ISNULL(INC.EINTEXPA,0)/ISNULL(BAL.DEPI5,0))*100 
    END AS 'CoF', RANK() OVER (Partition by STRU.repdte ORDER BY 
    CASE 
     WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL 
     ELSE (ISNULL(INC.EINTEXPA,0)/ISNULL(BAL.DEPI5,0))*100 
    END DESC) AS 'Rnk', COUNT(*) OVER (PARTITION BY STRU.repdte) as 'Cnt' 
    FROM MODEL_RIS_RMS_FDIC.dbo.STRU as STRU 
    JOIN MODEL_RIS_FDIC.dbo.CDI_RC_BAL as BAL 
     ON STRU.cert = BAL.cert AND STRU.callYMD = BAL.callYMD 
    JOIN MODEL_RIS_FDIC.dbo.CDI_RI_INC as INC 
    ON STRU.cert = INC.cert and STRU.callYMD = INC.callYMD 
    WHERE 
    CASE 
     WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL 
     ELSE (ISNULL(INC.EINTEXPA,0)/ISNULL(BAL.DEPI5,0))*100 
    END IS NOT NULL AND STRU.callYMD >= '2008-03-31' 
) A 
WHERE Perc < .11 

답변

0

나는에서 Cnt와 RNK의 데이터 유형은 INT이며, 따라서 결과가 당신에게에서 Cnt와 RNK 캐스팅 0 시도가

(cast(Cnt - Rnk) as FLOAT)/CAST(Cnt as FLOAT) 
+0

네 플로트하는 것입니다 INT 유형의 최소 값을 제공합니다 생각합니다. 그랬어. 도와 주셔서 정말로 고맙습니다. – user3456446