Я написал этот запрос. Это работает, но TotalCost остается одинаковым для разных параметров. Я хочу, чтобы он изменил свое значение соответственно. В настоящее время он принимает сумму всех строк, но он должен принимать только сумму строк, возвращаемых запросом.
alter PROCEDURE [dbo].[ServicesDetailedReportPartyWise]
@FromDate date= '01/Jun/2010',
@ToDate date= '01/Oct/2018',
@PartyName varchar(20)='B'
AS
BEGIN
Set @ToDate= ISNULL(@ToDate, getdate());
Select inv.InvoiceNo, Convert(varchar(11),inv.EntryDateTime,106) as EntryDateTime, s.ServiceName, c.VehicleRegNo, inv.ServicePrice, c.CustomerName, inv.Party as PartyName,
inv.fk_BookingID, t.TotalCost, SUM(t.TotalCost) over () as TotalRevenue, ISNULL(SUM(inv.OwnerCommission) over(),0) as TotalCommission, ISNULL(inv.OwnerCommission,0) as Commission
from dbo.[Services] s
inner join invoices inv
on inv.fk_ServiceID= s.ServiceID
inner join customers c
on c.CustomerID= inv.fk_CustomerID
Cross join (Select SUM(inc.ServicePrice) as TotalCost from dbo.Invoices inc) t
where inv.Party= @PartyName AND (convert(date, inv.EntryDateTime) between @FromDate and @ToDate)
order by inv.EntryDateTime desc
END