SQL server select query help for stored procedure needed

后端 未结 1 2039
离开以前
离开以前 2021-01-17 03:56

I\'m struggling with the logic required to structure a sql select query in a stored procedure. My database works with stock market data. I have a table of trading dates for

相关标签:
1条回答
  • 2021-01-17 04:22

    Recursion is your answer. Here's how you can take your inner select statement and transform it into range rows. Recursion is available in SQL 2005 or above so I hope that works for you.

    create table dates (dt datetime  null)
    go
    insert into dates(dt) values('1/1/2012')
    insert into dates(dt) values('1/2/2012')
    insert into dates(dt) values('1/3/2012')
    insert into dates(dt) values('1/4/2012')
    insert into dates(dt) values('1/10/2012')
    go
    
    --Show raw data
    select * from dates
    go
    
    --Define the recursive query
    WITH RecursiveQuery (anchorDate, dt)
    AS
    (
        -- Anchor member of recursive query
        SELECT 
            anchorDate=dt,
            dt
        FROM 
            dates AS e
        WHERE 
            NOT EXISTS(select 1 from dates where dateadd(day,-1,e.dt)=dt)
        UNION ALL
        -- Recursive member (notice join to RecursiveQuery)
        SELECT 
            anchorDate=d.anchorDate,
            e.dt
        FROM 
            dates AS e
            INNER JOIN RecursiveQuery AS d ON e.dt = dateadd(day,1,d.dt)
    )
    
    --Final Join
    select 
        startdt=anchorDate,enddt=max(dt) 
    FROM 
        RecursiveQuery 
    group by anchorDate
    order by anchorDate
    

    enter image description here

    0 讨论(0)
提交回复
热议问题