2014-10-09 8 views
2

У меня есть возвращаемый набор данных, который имеет ежемесячные значения для разных «целей». Цели имеют уникальные идентификаторы, а значения месяца/даты всегда будут одинаковыми для целей. Разница в том, что иногда одна цель не имеет значений за все те же месяцы, что и для другой цели, потому что она может начаться позднее, и я хочу «консолидировать» результаты и суммировать их на основе «First» startBalance для каждой цели. Пример набора данных будет;выберите значения столбцов на основе другой даты столбца

goalID monthDate startBalance 
1   1/1/2014  10 
1   2/1/2014  15 
1   3/1/2014  22 
1   4/1/2014  30 
2   4/1/2014  13 
2   5/1/2014  29 

Что я хочу сделать, это отобразить эти консолидированные (суммированные) значения в таблице, основанной на «Первом» значение (ранний месяц/год) для каждой цели. Результат будет выглядеть следующим образом:

Year  startBalance 
2014  23 

Это потому, что значение «первого» для goalID 1 является 10 и значение «первого» для goalID 2 является «13» Я пытаюсь в конечном счете использовать этот набор данных в отчете SSRS через отчет Builder, но группы не работают правильно для меня, поэтому я решил, могу ли я достичь этого с помощью своих запросов и просто отобразить данные, которые будут жизнеспособным решением.

Пример данных реального результата будет

enter image description here

, так что я бы хотел общий ResultSet быть;

Year  startBalance 
2014  876266.00 
2015  888319.92 
2016  --------- 

и так далее, я понимаю, к 2015 году в этом наборе результатов есть значение 0.00 для ID 71, но, как правило, который будет содержать фактическую сумму в долларах, которая будет автоматически регулировать.

ответ

4
WITH balances AS (
    SELECT ROW_NUMBER() OVER (PARTITION BY goalID ORDER BY monthDate ASC) n, startBalance, DATEPART(year, monthDate) [year] 
    FROM Goals 
) 

SELECT [year], SUM(startBalance) startBalance 
FROM balances 
WHERE n = 1 
GROUP BY [year] 
+0

Благодарим вас за отзыв, разве этот запрос не суммирует все значения startBalance за весь год? Я хочу суммировать только самые ранние значения для каждого идентификатора цели, например, значение 1/1/2014 для идентификатора цели 1 с значением 4/1/2014 от идентификатора goalID 2, чтобы получить 23 в этом случае, я считаю, что ваш запрос суммирует все значения по годам, я могу ошибаться, но это то, что показывает мое тестирование. еще раз спасибо за вашу помощь! –

+0

Я только что сделал таблицу с вашими данными выше, выполнил запрос, который я опубликовал, и результат был год: 2014, startBalance: 23. Не уверен, где это пошло не так для вас. – Namrehs

+0

http://stackoverflow.com/questions/26258815/adding-first-values-grouped-by-id-from-record-set-report-builder-3-0/26272997?noredirect=1#comment41229517_26272997 – Manoj

Смежные вопросы