Код SQL, который у меня есть, показан ниже. У меня проблема в первую очередь с подзапросом. В результате отображается ошибка:
ОШИБКА SQL: подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует за =, !=, ‹, ‹= , >, >= или когда подзапрос используется как выражение
Необходимо отображать строки с датой, большей (или равной) дате, где ESource = Detail — строки должны быть суммированы в одних столбцах, а одно значение выбрано в других.
Используемый код:
select DISTINCT
A.Policy,
A.Fund,
(SUM(A.AddUnits)) AS SUM,
((C.TotalUnits - (SUM(A.AddUnits))) * A.Price) AS Value,
Inner JOIN TableC C
ON C.PolicyNumber = A.PolicyNumber
where A.PolicyNumber = '120' AND C.NumberOfUnits > 0 AND C.InvestmentFund = A.InvestmentFund
AND A.DateOfEntry < DATEADD(year, -1, GetDate())
AND A.DateOfEntry >= (Select DateOfEntry FROM TableA AS D where D.ESource = 'Detail')
AND A.UnitPrice = (Select UnitPrice FROM TableA AS E where E.ESource = 'Detail')
ORDER BY IH.DateOfEntry DESC
Таблицы:
Таблица А:
Цена паев страхового фонда ESource Дата
120 БР 6 0,74 ОТ 2015 г.
120 БР -100 0,72 Деталь 2014 г.
120 BR 6 0,71 RE 2013
ТАБЛИЦА С:
Страховой фонд TotalUnits
120 400 руб.
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ:
Полис Фонд Сумма Цена Стоимость
120 БР [6+(-100)] = -94 0,72 [(400+(-94))*0,72] = 220,32
А также проблемы с подзапросом - команда для получения price = 0.72 [where ="Detail"]
останавливает сумму обеих строк, образующих Sum = -100
, а не -94
Любая помощь с ошибками будет принята с благодарностью