10を記録する前に、パケットデータのフィールドを取得するSQL Serverの

1、SQL文法

SELECT M、N
 からSELECT ROW_NUMBERを()の上に(パーティションによって M個の順序 によって、n個のDESC)RN、- Mパケット、それぞれ逆の順序Nそれぞれの番号に対して要求パケット
        M、N
     から 
    WHERE ... 
)W 
WHERE w.rn <= 10 ; 10未満の数
 順序 によって M、N- DESC

顧客データを取得するためにヶ月前2、10例

元のデータ

ケースSQL

select
StatDate,
OrderCount,
AmountTotal,
CustomerUnitPrice
from

(
   select
      row_number () over (partition by t.StatDate order by t.AmountTotal desc) rn,
      *
   from 

   ( 
        select 
         CONVERT(varchar(7), AuditTime, 120) StatDate,
         FBM_USER_ID CustomerId,
         Count(1) OrderCount,
         sum(isnull(FBM_BLL_BOOK_TOTAL,0)) AmountTotal,
         case when sum(isnull(FBM_BLL_BOOK_TOTAL,0)) >0 then Round((sum(isnull(FBM_BLL_BOOK_TOTAL,0)) / Count(1) + 0.0), 4) else  0 end as CustomerUnitPrice
        from 
        F_CUST_BOOK_MSTR b
        where auditStatus=2 and AuditTime is not null
        and AuditTime>='2017-06-01'
        group by CONVERT(varchar(7), AuditTime, 120),FBM_USER_ID
    ) t
) tt
where rn <=10
order by StatDate desc

查询结果

 

おすすめ

転載: www.cnblogs.com/zoro-zero/p/10954781.html