Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Помогите с запросом....  [new]
riman
Member

Откуда:
Сообщений: 2234
Тут такая проблема...
Имеется "Table" с полями:
IND --Индекс страны
Vol --Объем товара из этой страны
Date --Дата перевозки этих товаров.

Необходимо вывести отчет в такой форме:
IND Vol Vol1

где Vol и Vol1 за текущий и предыдущий год соответственно.

Я пытался делать это так:
WITH Pred AS
(SELECT IND AS PIND, Vol AS PVol
FROM Table
WHERE Date=Предыдущий год)
SELECT IND,
Vol,
CASE WHEN IND=PIND THEN PVol ELSE 0 END AS Vol1
FROM Table
WHERE Date=Текущий год
Результат выглядит примерно так:
IND-----Vol-----Vol1
12-------2-------0
12-------2-------3
Нужно чтобы первая строка и аналогичные ей не выводились. Подскажите пожалуйста как это сделать. Спасибо.
14 май 03, 21:08    [198987]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом....  [new]
Дыбала Василий
Member

Откуда: Ростов - на - Дону
Сообщений: 27
а если попробовать так:

select a.ind,b.vol as Pvol, c.vol as Cvol

from ((Table a left join Table b on a.ind=b.ind)
left join Table c on a.ind=c.ind)
where b.Date=PrevDate and c.Date=CurrDate;
15 май 03, 08:26    [199095]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом....  [new]
golsa
Member

Откуда: Красноярск
Сообщений: 789
select
ind,
sum (case where year(date) = <текущий год> then vol else 0 end) as vol,
sum (case where year(date) = <предыдущий год> then vol else 0 end) as vol1
from table
where
date between <начало предыдущего года> and <конц текущего года>
group by ind
15 май 03, 09:04    [199130]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом....  [new]
riman
Member

Откуда:
Сообщений: 2234
Спасибо ответившим. Подошел первый пример, но с небольшой модификацией:

WITH Pred AS
(SELECT Table.IND AS P_IND,
Table.Vol AS P_Vol,
FROM Table
WHERE Table.Date=<Предыдущая дата>)

SELECT Table.IND,
Table.Vol,
P_Vol
FROM Table LEFT OUTER JOIN Pred ON Table.IND=P_IND
WHERE Table.Date=<Текущая дата>
15 май 03, 21:15    [200379]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить