Я использую MS SQL 2005 и создал запрос CTE для возврата значений из двух последних записей. Затем я использую это, чтобы найти дельту двух цифр. У меня есть рабочий запрос, но
У меня проблемы с получением чего-либо, кроме фигуры дельты.
вот мой запрос:
;with data as(
SELECT
NetObjectID,
RawStatus,
RowID,
rn
from(
SELECT
CustomPollerAssignmentID AS NetObjectID,
RawStatus,
RowID,
row_number() over(order by DateTime desc)as rn
FROM CustomPollerStatistics_Detail
WHERE
(CustomPollerAssignmentID='a87f531d-4842-4bb3-9d68-7fd118004356')
) x where rn<=2
)
SELECT
case when
max(case rn when 1 then RawStatus end) > max(case rn when 2 then RawStatus end)
then
max(case rn when 1 then RawStatus end) - max(case rn when 2 then RawStatus end)
else
max(case rn when 2 then RawStatus end) - max(case rn when 1 then RawStatus end)
end as Delta
from data having
(SELECT
case when
max(case rn when 1 then RawStatus end) > max(case rn when 2 then RawStatus end)
then
max(case rn when 1 then RawStatus end) - max(case rn when 2 then RawStatus end)
else
max(case rn when 2 then RawStatus end) - max(case rn when 1 then RawStatus end)
end
from data) >= 1
Я хочу вернуть Delta & NetObjectID. Каждый раз, когда я пытаюсь, я получаю ошибки.
data.NetObjectID is invalid in the select list because it is not contained in either an aggregate function or the group by clause.
Если я пытаюсь добавить group by и т. Д. В конец запроса, я получаю дополнительную ошибку с жалобой на слово «group».
Я относительно новичок в SQL и собираюсь с ходу. Любая помощь будет принята с благодарностью.