I have a table like this.
Depositors Table
Value(int) StartDate(Date) AccountID(int)
I want to create a report from this table. the report should look like this.
Value No of Accounts Average Value
For Yesterday
For Last 7days
For Last 30 days
Please Can anyone write a simple query for this?
Thanks
declare @.temptable table (amount decimal(10,2) , duration nvarchar(50),date datetime)
insert into @.temptable(amount,duration,date)
select top 100 sum(grandtotal),
case when saledate = dateadd("d",-1,dateadd("month",0,'07/20/2007')) then 'yesterday' --cast (saledate as nvarchar(30))
when saledate < dateadd("d",-1,dateadd("month",0,'07/20/2007')) and saledate >= dateadd("d",-7,dateadd("month",-1,'07/20/2007')) then 'Last 7 days'
when saledate < dateadd("day",-1,dateadd("month",-1,'07/20/2007')) and saledate >= dateadd("day",-2,dateadd("month",-3,'07/20/2007')) then 'Last month'
when saledate < dateadd("day",-2,dateadd("month",-3,'07/20/2007')) and saledate >= dateadd("d",-1,dateadd("year",-2,'07/20/2007')) then 'Last 1 year'
else '...'
end , saledate
from sale group by saledate order by saledate desc
select sum(amount), duration from @.temptable group by duration order by max(date) desc
Bad formatting but query works..
I checked it..
in my database i have old date so i need to use old date.. but you can use today's date..
|||Thanks..
I tried with this one..But I did not get what I want.
I changed it lil bit.
declare @.temptable table (amount decimal(10,2) , duration nvarchar(50),date datetime)
insert into @.temptable(amount,duration,date)
select sum(Amount),
case when startdate >= GETDATE()-1 then 'yesterday'
when Startdate >= GETDATE()-7 then 'Last 7 days'
when startdate >=GETDATE()-30 then 'Last month'
end , startdate
from CD group by startdate order by startdate desc
select sum(Amount), duration from @.temptable group by duration order by max(date) desc
Query works. But it does not show values for duration. As example, it does not show whether its yesterday , Last7days or etc.
But I want to get the report as shown above.....
|||
shamen wrote:
Thanks..
I tried with this one..But I did not get what I want.
I changed it lil bit.
declare @.temptable table (amount decimal(10,2) , duration nvarchar(50),date datetime)
insert into @.temptable(amount,duration,date)
select sum(Amount),
case when startdate >= GETDATE()-1 then 'yesterday'
when Startdate >= GETDATE()-7 then 'Last 7 days'
when startdate >=GETDATE()-30 then 'Last month'
end , startdatefrom CD group by startdate order by startdate desc
select sum(Amount), duration from @.temptable group by duration order by max(date) descQuery works. But it does not show values for duration. As example, it does not show whether its yesterday , Last7days or etc.
But I want to get the report as shown above.....
declare @.temptable table (amount decimal(10,2) , duration nvarchar(50),date datetime)
insert into @.temptable(amount,duration,date)
select sum(Amount),
case when startdate = dateadd("d",-1,GETDATE()) then 'yesterday'
when Startdate between dateadd("d",-1,GETDATE()) and dateadd("d",-7,GETDATE()) then 'Last 7 days'
when startdate between dateadd("d",-7,GETDATE()) and dateadd("d",-30,GETDATE()) then 'Last month'
Else 'ABC'
end as duration, startdate
from CD group by startdate order by startdate desc
select sum(Amount), duration from @.temptable group by duration order by max(date) desc
May it works now. For testing purpose always keep default value so atlease you can know that condition is going where
No comments:
Post a Comment