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