SQL group by day, show orders for each day

后端 未结 6 1573
梦毁少年i
梦毁少年i 2020-12-15 22:44

I have an SQL 2005 table, let\'s call it Orders, in the format:

OrderID, OrderDate,  OrderAmount
1,       25/11/2008, 10
2,       25/11/2008, 2
3,       30/1         


        
6条回答
  •  离开以前
    2020-12-15 23:09

    I had the same problem and this is how I solved it:

    SELECT datename(DW,nDays) TimelineDays, 
        Convert(varchar(10), nDays, 101) TimelineDate,
        ISNULL(SUM(Counter),0) Totals 
    FROM (Select GETDATE() AS nDays
        union Select GETDATE()-1
        union Select GETDATE()-2
        union Select GETDATE()-3
        union Select GETDATE()-4
        union Select GETDATE()-5
        union Select GETDATE()-6) AS tDays
    
    Left Join (Select * From tHistory Where Account = 1000) AS History
                on (DATEPART(year,nDays) + DATEPART(MONTH,nDays) + DATEPART(day,nDays)) = 
                (DATEPART(year,RecordDate) + DATEPART(MONTH,RecordDate) + DATEPART(day,RecordDate)) 
    GROUP BY nDays
    ORDER BY nDays DESC
    

    The ouput is:

    TimelineDays,   TimelineDate,     Totals
    
    Tuesday         10/26/2010        0
    Monday          10/25/2010        6
    Sunday          10/24/2010        3
    Saturday        10/23/2010        2
    Friday          10/22/2010        0
    Thursday        10/21/2010        0
    Wednesday       10/20/2010        0
    

提交回复
热议问题