declare @BookStatistic table (BookName varchar(200),
NumberofOrders int,
CollectedOrders int,
CancelledOrders int,
WaitingOrders int,
A1 float,
A2 float,
Efficiency float);
insert @BookStatistic exec(@SQL)
select * from @BookStatistic
--------------------------------------------------------------------------------------------------------------------------------
Full Dynamic Query Sample
/****** Object: StoredProcedure [dbo].[Rpt_OrderStatistics_Bookwise] Script Date: 2/10/2016 8:15:50 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[Rpt_OrderStatistics_Bookwise]
@FromDate Date,
@ToDate Date,
@BookName bit = 0,
@TotalOrderAsc bit = 0,
@TotalOrderDesc bit = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @WhereCondition Varchar(max)=''
DEclare @SQL varchar(max)=''
set @SQL= ' Select
Book.BookName
,Count(Book.BookName) as ''NumberofOrders''
,SUM(Case WHEN [Order].OrderStatusID =2 THEN 1 ELSE 0 END) as ''CollectedOrders''
,SUM(Case WHEN [Order].OrderStatusID =3 THEN 1 ELSE 0 END) as ''CancelledOrders''
,SUM(Case WHEN [Order].OrderStatusID =1 THEN 1 ELSE 0 END) as ''WaitingOrders''
,Convert(decimal(18,2), (SUM(Case WHEN [Order].OrderStatusID =2 THEN 1 ELSE 0 END))) as ''A1''
,Convert(decimal(18,2), (Count(Book.BookName))) as ''A2''
,Convert(decimal(18,2),
(
Convert(decimal(18,3), (SUM(Case WHEN [Order].OrderStatusID =2 THEN 1 ELSE 0 END))) /
Convert(decimal(18,3), (Count(Book.BookName)))
) * 100 )as ''Efficiency''
FROM [Order]
INNER Join OrderDetail on ([Order].ID = OrderDetail.OrderID)
INNER Join Book on (OrderDetail.BookID = Book.ID)
Where [Order].OrderTypeID = 2
AND [Order].OrderDate Between '''+CONVERT(VARCHAR(10), @FromDate, 120)+''' and '''+CONVERT(VARCHAR(10), @ToDate, 120)+'''
Group by Book.BookName'
IF @BookName = 1
BEGIN
Set @SQL = @SQL + ' Order by Book.BookName '
END
IF @TotalOrderAsc = 1
BEGIN
Set @SQL = @SQL + ' Order by Count(Book.BookName) asc '
END
IF @TotalOrderDesc = 1
BEGIN
Set @SQL = @SQL + ' Order by Count(Book.BookName) desc '
END
declare @BookStatistic table (BookName varchar(200),
NumberofOrders int,
CollectedOrders int,
CancelledOrders int,
WaitingOrders int,
A1 float,
A2 float,
Efficiency float);
insert @BookStatistic exec(@SQL)
select * from @BookStatistic
END
No comments:
Post a Comment