4,816
社区成员




if object_id('F_GetSunday','fn') is not null
drop function F_GetSunday
go
-- =============================================
-- Author: <Author,Welly>
-- Create date: <Create Date,2011-05-25,>
-- Description: <Description,Get last day of week,>
-- =============================================
CREATE FUNCTION F_GetSunday(@year INT,@w int)
returns NVARCHAR(10)
as
begin
declare @rq datetime
set @rq=CAST(@year AS varchar)+'0101'
select @rq=max(dateadd(DD,number,@rq))
from master..spt_values where type='p' and datepart(week,dateadd(DD,number,@rq))=@w and number<365
return convert(nvarchar(10),@rq,121)
end
GO
select a.saleYear,a.SaleWeek,a.ProductId,a.SaleDate,a.SaleCount
from (
select year(SaleDate) saleYear, DATEPART (week,SaleDate) SaleWeek,convert(nvarchar(10),SaleDate,121) as SaleDate,ProductId,SaleCount
from TableProductSales
union all
select year(SaleDate) saleYear, DATEPART (week,SaleDate) SaleWeek,dbo.F_GetSunday(year(SaleDate),DATEPART (week,SaleDate))+N'周汇总' AS saledate,ProductId,sum(SaleCount) as SaleCount
from TableProductSales
group by year(SaleDate) , DATEPART (week,SaleDate),productid
) as a
order by a.saleYear,a.SaleWeek,a.ProductId,saledate