2012-10-12 5 views
0

다음 SQL 쿼리가 있습니다. 모든 행 수를 얻고 싶습니다. 아무도 나 도와 줄 수 없어?행 수 얻기

WITH numberedrows 
    AS (SELECT DISTINCT TOP 10 f_feeid_pk, 
           f_code, 
           f_description, 
           f_fee, 
           f_areaid_ind_fk, 
           a_name_ind, 
           p_name_ind, 
           s_name_ind, 
           b_name_ind, 
           Row_number() 
            OVER ( 
            ORDER BY b_name_ind, s_name_ind, p_name_ind, 
            a_name_ind, f_code ASC) AS 
           RowNumber 
     FROM t_fee 
       INNER JOIN t_area 
         ON f_areaid_ind_fk = a_areaid_pk 
       INNER JOIN t_project 
         ON a_projectid_fk = p_projectid_pk 
       INNER JOIN t_section 
         ON p_sectionid_fk = s_sectionid_pk 
       INNER JOIN t_branch 
         ON s_branchid_fk = b_branchid_pk 
     WHERE f_feeid_pk > 0) 
SELECT * 
FROM numberedrows 

답변

2

, DISTINCTDISTINCT TOP 10 모든 별개의 결과를 얻을 수 있음을 바꾸기 만 별개의 수에 관심이있는 가정, 그렇지 않으면뿐만 아니라 DISTINCT를 제거하고 사용하는 CTE 위에 SELECT을 변경 COUNT(*)

WITH numberedrows 
    AS (SELECT DISTINCT f_feeid_pk, 
           f_code, 
           f_description, 
           f_fee, 
           f_areaid_ind_fk, 
           a_name_ind, 
           p_name_ind, 
           s_name_ind, 
           b_name_ind, 
           Row_number() 
            OVER ( 
            ORDER BY b_name_ind, s_name_ind, p_name_ind, 
            a_name_ind, f_code ASC) AS 
           RowNumber 
     FROM t_fee 
       INNER JOIN t_area 
         ON f_areaid_ind_fk = a_areaid_pk 
       INNER JOIN t_project 
         ON a_projectid_fk = p_projectid_pk 
       INNER JOIN t_section 
         ON p_sectionid_fk = s_sectionid_pk 
       INNER JOIN t_branch 
         ON s_branchid_fk = b_branchid_pk 
     WHERE f_feeid_pk > 0) 
SELECT COUNT(*) FROM numberedrows; 
+0

감사합니다. Vikdor. 그게 정확히 필요합니다. 잘 했어. – Namal

+0

DISTINCT는이 특별한 경우 결과에 영향을주지 않습니다. DISTINCT는 SELECT 후에 평가되고, SELECT는 중복이없는 행을 생성하고, "ROW_NUMBER()"는 "감사합니다. –