Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Запрос 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1153049491
spogi
2006-07-16 15:31
2006.08.06
Нумерация


2-1152855145
petvv
2006-07-14 09:32
2006.08.06
FastReport


2-1153134172
STX
2006-07-17 15:02
2006.08.06
Блокирование строки таблицы на время редактирования


11-1131108788
MTsv DN
2005-11-04 15:53
2006.08.06
Transparent для Item a в ListView...


15-1152554385
Ломброзо
2006-07-10 21:59
2006.08.06
EAN-13





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский