Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Запрос SQL   Найти похожие ветки 

 
asail   (2006-07-17 18:45) [0]

Здрасте!!! Нужна помощь в составлении запроса...
Есть таблица вида
ID  DATE  PRICE
надо получить таблицу (результат) вида
ID  DATE1  PRICE1  DATE2  PRICE2
где две строки исходной таблицы с максимальнами датами превращаются в одну соответствующую запись. И так для всех ID.
Надеюсь, понятно объяснил...


 
Fay ©   (2006-07-17 19:05) [1]

2 asail   (17.07.06 18:45)
> Надеюсь, понятно объяснил...
OK, всё ясно. Выкладывай остальные 2 желания!


 
PEAKTOP ©   (2006-07-17 19:15) [2]

ДОПУСТИМ, ТВОЯ ТАБЛИЦА НАЗЫВАЕТСЯ TMC_PRICE


CREATE PROCEDURE MY_PROC
RETURNS(
 ID INTEGER,
 DATE1 TIMESTAMP,
 PRICE1 NUMERIC(15,3),
 DATE2 TIMESTAMP,
 PRICE2 NUMERIC(15,3)
)
AS
BEGIN
 FOR SELECT DISTINCT TTP.ID, MAX(TTP."DATE") FROM TMC_PRICE TTP GROUP BY TTP.ID INTO :ID, :DATE1 DO
   BEGIN
   SELECT TP.PRICE
   FROM    TMC_PRICE TP
   WHERE  (TP.ID = :ID)
      AND   (TP."DATE" = :DATE1)
   INTO   :PRICE1;
   
   SELECT FIRST 1 TP."DATE", TP.PRICE
   FROM    TMC_PRICE TP
   WHERE  (TP.ID = :ID)
      AND   (TP."DATE" IN (SELECT MAX(TTP."DATE") FROM TMC_PRICE TTP WHERE (TTP."DATE" < :DATE1)))
   INTO    :DATE2, :PRICE2;
   END
END



 
PEAKTOP ©   (2006-07-17 19:17) [3]

Ну а дальше -

select * from my_proc;


 
Fay ©   (2006-07-17 19:34) [4]

2 PEAKTOP ©   (17.07.06 19:15) [2]
Зачем DISTINCT ?


 
asail   (2006-07-17 19:53) [5]

А без СП? Вообще, возможно такое?


 
Fay ©   (2006-07-17 20:12) [6]

2 asail   (17.07.06 19:53) [5]
> А без СП? Вообще, возможно такое?
На IB - нет


 
Johnmen ©   (2006-07-17 20:12) [7]


> PEAKTOP ©   (17.07.06 19:15) [2]


Тема FIRST в плоскости IB6 не раскрыта...


> asail   (17.07.06 19:53) [5]
> А без СП? Вообще, возможно такое?


1. Что такое СП?
2. Возможно, но радости не доставит...:)


 
Asail   (2006-07-17 21:48) [8]


> 1. Что такое СП?

Обшипка вышла - это ХП.

> 2. Возможно, но радости не доставит...:)

Это плохо... База не моя - ХП для данного отчета мне туда впихнуть вряд-ли дадут :-(. Надо-бы все на клиенте делать. Есть идеи какие-нибудь?


 
Johnmen ©   (2006-07-17 22:30) [9]

Приводи пример исходных данных и результирующего набора данных.
Данные должны быть показательными, охватывающими все возможные варианты...


 
Asail   (2006-07-18 00:11) [10]

А это и есть исходные данные. Задача такая: в приведенной выше таблице (полей там несколько больше, но к делу они не относятся) хранится история изменения цен на различные товары (код товара - поле "ID"). Задача - отобразить за указанный период времени как менялись цены для каждого товара. Результирующая таблица должна выглядеть примерно (опускаем дополнительные поля с описанием товаров) так:
ID    CHANGING_DATE    NEW_PRICE     OLD_PRICE
понятно, что для некоторых товаров в исходной таблице может быть всего одна строка (т.е. цена не менялась вообще). В таком случае OLD_PRICE должен быть NULL или 0.
Буду признателен за помощь.


 
Johnmen ©   (2006-07-18 09:32) [11]

Ещё раз. Постановка задачи мне уже не интересна.
Приводи пример исходных данных и результирующего набора данных.
Что такое исходные ДАННЫЕ надо пояснить?


 
Sergey13 ©   (2006-07-18 09:41) [12]

2 [10] Asail   (18.07.06 00:11)
> понятно, что для некоторых товаров в исходной таблице может
> быть всего одна строка (т.е. цена не менялась вообще).
А может быть 8 или например 16 (обвал цен). Как это обрабатывать?


 
Asail   (2006-07-18 09:48) [13]

Короче говоря, надо повторить все строки исходной таблицы, но добавить к ним еще одно поле с предыдущим (последним) значением цены (если такая есть). Вот и все.
Кстати, как мне кажется, я нашел решение. Проведу тесты, и если да, то выложу сюда.
Но все равно буду признателен за другие варианты (возможно, более оптимальные).


 
Johnmen ©   (2006-07-18 10:25) [14]

Мдя... Тяжёлый случай...:)
Да и ладно



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
2-1153329897
HNN
2006-07-19 21:24
2006.08.06
FindDialog


15-1152715483
Ломброзо
2006-07-12 18:44
2006.08.06
Новый mail.ru а-ля Outlook web access


2-1152733502
XeON
2006-07-12 23:45
2006.08.06
Добавление записи в динамический массив


2-1153430505
Батя
2006-07-21 01:21
2006.08.06
WebBrowser


2-1152715492
Denissoft
2006-07-12 18:44
2006.08.06
WinAPI