【发布时间】:2018-06-04 11:40:18
【问题描述】:
我正在尝试获取 TotalPrice 的总和但抛出错误:
列 “Invoices.ServicePrice”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
ALTER PROCEDURE [dbo].[SalesReport]
@FromDate date= '11-May-2018',
@ToDate date= '05-Jun-2018'
AS
BEGIN
Set @ToDate= case when @ToDate IS NULL then Convert(varchar(11), getdate(), 106) else @ToDate end
Select ROW_NUMBER() over (partition by b.BookingID order by b.BookingID) as ID, inv.InvoiceNo,
convert(varchar(11),inv.EntryDateTime,106) as EntryDateTime, Count(s.ServiceID) as TotalServices,
SUM(inv.ServicePrice) as TotalPrice, SUM(inv.ServicePrice) over() as TotalRevenue
from Invoices inv
Inner Join Bookings b
ON b.BookingID= inv.fk_BookingID
Inner Join ZahidCarWashDB.dbo.Services s
ON s.ServiceID= inv.fk_ServiceID
where Convert(varchar(11), inv.EntryDateTime, 106) between @FromDate and @ToDate
group by convert(varchar(11),inv.EntryDateTime,106), inv.InvoiceNo, b.BookingID
END
【问题讨论】:
-
我的猜测是在你调用它的时候还没有数量。
-
另外,您永远不应该将日期转换为字符串进行比较。
标签: sql sql-server tsql stored-procedures sql-server-2012