簡體   English   中英

T-SQL:前5個查詢中的月份

[英]T-SQL: Months in Top 5 query

基本查詢是:

SELECT Top 5 
[Year], [Month], Title, Units, [Rank]
from aTable
WHERE [Year] = @Year and [Month] = @Month
order by [Rank] desc

我要添加的是[前5個月的月份]列,該列將向我顯示前5列中的每一行連續第5或更少。

;with myTable as (
    select
        dateadd(yy,[Year]-1900,0) + dateadd(mm,[Month]-1,0) YearMonth,
        Title,
        Units,
        Rank
    from
        aTable
),
results as (

    select
        YearMonth,
        Title, 
        Units, 
        [Rank]
    from
        myTable
    where
        YearMonth = dateadd(m,datediff(m,0,getdate()),0) and
        Rank <= 5
    union all
    select
        b.YearMonth,
        b.Title, 
        b.Units, 
        0 Rank
    from
        myTable b
        join results a on
            b.Title = a.Title and 
            b.YearMonth = dateadd(m,-1,a.YearMonth) and 
            b.Rank <=5
)
select 
    max(YearMonth),
    Title,
    sum(Units) Units,
    max(Rank) Rank,
    count(*) MonthsInTop5
from
    results
group by
    Title
order by
    Rank Desc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM