У меня есть приведенный ниже код, который выдает от 1 до 3 результатов каждый раз.
Однако мне бы хотелось иметь общее значение (до) трех результатов, а не указывать их в списке.
Я не могу просто обернуть всю кодировку в select sum ()
, не получив вышеуказанную ошибку
Любая помощь, чрезвычайно оцененная
-
select
case when sum(w.Value) > 3*sum(isnull (m.FFT1*m.FFL3V,0)
+ isnull (m.FFT2*m.FFL3HCV,0)
+ isnull (m.FFT3*m.FFFinanceSettleV,0)
+ isnull (m.FFT4*m.FFFinanceSettleHCV,0)
+ isnull (m.FFT5*m.FFL4V,0)
+ isnull (m.FFT6*m.FFL4HCV,0))
/count(w.ptmatter)
then CAST (SUM(w.Value) AS NUMERIC(38,2))
else (
select sum (isnull (m.FFT1*m.FFL3V,0)
+ isnull (m.FFT2*m.FFL3HCV,0)
+ isnull (m.FFT3*m.FFFinanceSettleV,0)
+ isnull (m.FFT4*m.FFFinanceSettleHCV,0)
+ isnull (m.FFT5*m.FFL4V,0)
+ isnull (m.FFT6*m.FFL4HCV,0))
/ count(w.ptmatter))
end
from dbo.workinprogress as w
full join dbo.matterdatadef as m
on (w.ptmatter = m.ptmatter)
where (w.time <> 0)
and (w.ptclient=
(select top 1 ptclient from workinprogress
where ptmatter=$matter$))
and (m.lsccert =
(select lsccert
from matterdatadef
where ptmatter=$matter$)
or (m.ptmatter=$matter$))
group by m.ptmatter