Форум: "Начинающим";
Текущий архив: 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