Я борющиеся с элегантным решением для этого на некоторое время, и думали, что я наконец-то взломал, но я теперь получаю ошибкуНесколько столбцов в агрегированном выражении
Несколько столбцов указаны в агрегированном выражение, содержащее внешнюю ссылку. Если агрегированное выражение содержит внешнюю ссылку, то эта внешняя ссылка должна быть единственным столбцом, на который ссылается выражение.
Что меня разочарует!
По существу запроса:
select
u.username + ' ' + u.surname,
CASE WHEN ugt.type = 'Contract'
THEN
(
select sum(dbo.GET_INVOICE_WEEKLY_AVERAGE_VALUE(pc.placementid, u.UserId))
from PlacementConsultants pc
where pc.UserId = u.UserId
and pc.CommissionPerc >= 80
)
END
from usergradetypes ugt
inner join usergrades ug on ug.gradeid = ugt.usergradetypeid
inner join users u on u.userid = ug.userid
Функция GET_INVOICE_WEEKLY_AVERAGE_VALUE выглядит следующим образом
ALTER function [dbo].[GET_INVOICE_WEEKLY_AVERAGE_VALUE](@placementid INT, @userid INT)
RETURNS numeric(9,2)
AS
BEGIN
DECLARE @retVal numeric(9,2)
DECLARE @rollingweeks int
SET @rollingweeks = (select ISNULL(rollingweeks,26) FROM UserGradeTypes ugt
inner join UserGrades ug on ugt.UserGradeTypeID = ug.gradeid
WHERE ug.userid = @userid)
SELECT @retVal =
sum(dbo.GET_INVOICE_NET_VALUE(id.InvoiceId))/@rollingweeks from PlacementInvoices pli
inner join invoicedetails id on id.invoiceid = pli.InvoiceId
where pli.PlacementID = @placementid
and pli.CreatedOn between DATEADD(ww,[email protected],getdate()) and GETDATE()
RETURN @retVal
Запрос прекрасно работает без суммы, но когда я пытаюсь суммировать стоимость сделок , это падает (что мне нужно сделать для сводной страницы)
http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Mihai
Что произойдет, если вы замените 'u.UserId' на' pc.UserId' в вызове функции? –
@Mihai Достаточно честный, но я не понимаю, почему, когда я запускаю функцию, я не могу просто сделать на нее сумму? – franglais