помогите с запросом

Perederiy
Дата: 19.01.2015 13:05:27
есть таблица

id,pole1,pole2,2013,1
id,pole1,pole2,2013,2

надо сделать выборку (без union)
чтобы pole1 шла сумма по всем записям, а для pole2 бралось только значение для 2013,2

что-то не соображу как это сделать в одном запросе без union
Добрый Э - Эх
Дата: 19.01.2015 13:27:13
приведи юзабильный набор тестовых данных и желаемый вид результата на них.
а вообще, смотреть в сторону групповых (а возможно - оконных) функций.
Perederiy
Дата: 19.01.2015 13:34:57
Добрый Э - Эх,

id,pole1,pole2,2013,1
id,pole1,pole2,2013,2

1,11,33,2013,1
2,9,4,2013,2

pole1 - это начисление за месяц
pole2 - долг на конец месяца

мне надо выбрать сумму начислений за 2 месяца, но сумму долга на 2013-02 (те на последний месяц)

должно быть в итоге

20,4
Добрый Э - Эх
Дата: 19.01.2015 13:43:47
Perederiy,
--
-- Тестовые данные:
with
  t (id,pole1,pole2,pole3,pole4) as
    (
      select 1, 11, 33, 2013, 1 union all
      select 2,  9,  4, 2013, 2
    )
--
-- Основной запрос:
select distinct 
       sum(pole1) over() as total_sum_of_pole2,
       first_value(pole2) over(order by pole3 desc, pole4 desc) as last_value_of_pole2
  from t
online проверка на sqlfiddle.com
Добрый Э - Эх
Дата: 19.01.2015 13:55:09
Добрый Э - Эх
Perederiy,
--
-- Тестовые данные:
with
  t (id,pole1,pole2,pole3,pole4) as
    (
      select 1, 11, 33, 2013, 1 union all
      select 2,  9,  4, 2013, 2
    )
--
-- Основной запрос:
select distinct 
       sum(pole1) over() as total_sum_of_pole2,
       first_value(pole2) over(order by pole3 desc, pole4 desc) as last_value_of_pole1
  from t
online проверка на sqlfiddle.com
:)
Добрый Э - Эх
Дата: 19.01.2015 13:57:38
Добрый Э - Эх
Perederiy,
--
-- Тестовые данные:
with
  t (id,pole1,pole2,pole3,pole4) as
    (
      select 1, 11, 33, 2013, 1 union all
      select 2,  9,  4, 2013, 2
    )
--
-- Основной запрос:
select distinct 
       sum(pole1) over() as total_sum_of_pole1,
       first_value(pole2) over(order by pole3 desc, pole4 desc) as last_value_of_pole2
  from t
online проверка на sqlfiddle.com
:)совсем за опечатывался...
Perederiy
Дата: 19.01.2015 14:12:40
Добрый Э - Эх,

спасибо но мне нужно именно суммирование

p1,p2,p3,p4,p5

1,1,5,2013,1
2,2,7,2013,1
3,4,5,2013,2
4,4,5,2013,2

те для 2013-2 p3 надо суммировать
для всех остальных месяцев нет
p2 суммировать для всех записей

те в итоге

11,10
Добрый Э - Эх
Дата: 19.01.2015 14:22:08
Perederiy,

просто добавь GROUP BY:
--
-- Тестовые данные:
with
  t (id,pole1,pole2,pole3,pole4) as
    (
      select 1,1,5,2013,1 union all
      select 2,2,7,2013,1 union all
      select 3,4,5,2013,2 union all
      select 4,4,5,2013,2
    )
--
-- Основной запрос:
select distinct 
       sum(sum(pole1)) over() as total_sum_of_pole1,
       first_value(sum(pole2)) over(order by pole3 desc, pole4 desc) as last_value_of_pole2
  from t
 group by pole3, pole4
online проверка на sqlfiddle.com