Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замысловатый SQL-запрос [D7, FB 2.0]


RomanH ©   (2006-11-21 11:36:00) 

Мастера помогите составить запрос.Таблица такова

DateV    CodeV   In_count   Curs
21.11.2006   840    1      26.640
21.11.2006   978    1      39.190
21.11.2006   826    1      50.489
21.11.2006   392    100   26.601
22.11.2006   840    1      26.640
22.11.2006   978    1      39.190
22.11.2006   826    1      50.489
22.11.2006   392    100   26.601

Нужен запрос который формировал бы
22.11.2006  26.640, 39.190, 50.489, 26.640
22.11.2006  26.640, 39.190, 50.489, 26.640
У меня просто ни каких вариантов не имеется для решения
этой задачи.Помогите.


Кщд   (2006-11-23 15:44:00) [1]


> select * from таблица where CodeV=840 and CodeV=978

пустой рекордсет можно и не "распихуить" ))


YurkaT   (2006-11-22 21:58:00) [2]

select * from таблица where CodeV=840 and CodeV=978 (если кому выбор надо) order by DateV....
а потом по строчно распихуеш так, как тебе угодно, в stringgrid(так для удобсва))


Anatoly Podgoretsky   (2006-11-21 22:18:00) [3]

> RomanH  (21.11.2006 18:40:05)  [5]

А в каком направление он должен был развиться?


Kolan   (2006-11-21 19:13:00) [4]

Да если будешь смотреть топик, я свою сделал процедуру(ры), а не воспользовался предложеной


Kolan   (2006-11-21 19:02:00) [5]

Сделай хранимую процедуру. Была похожая задача.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1163160336&n=1

В итоге сделал. А ели делать на клиенте, то в каждого клиента код копировать...


saxon   (2006-11-21 18:57:00) [6]


> RomanH ©   (21.11.06 18:40) [5]

Так а кто его знает правильно или нет.
Мы то не знаем на кой все это надо. Может у Вас в программе с логикой не все в порядке и как следствие - > SQL не развился как следует в некоторых направлениях.


RomanH   (2006-11-21 18:40:00) [7]

Задача решена.
Правильно аль нет судите сами.
Для каждой валюты свой IBQuery.
Например при выборе 840 и 978 открываются только они, остальные переоткрываются но только код валюты я указываю "левый".
Все таки SQL не развился как следует в некоторых направлениях.


PEAKTOP   (2006-11-21 15:28:00) [8]


EXECUTE BLOCK
RETRUNS
(
 REC_DATE TIMESTAMP,
 CURS_1 NUMERIC(15,3),
 CURS_2 NUMERIC(15,3),
 CURS_3 NUMERIC(15,3),
 CURS_4 NUMERIC(15,3)
)
AS
BEGIN
 FOR
   SELECT DISTINCT
T.DATEV FROMYOUR_TABLE Y INTO:REC_DATE
  DO
    BEGIN

    SELECT FIRST 1T.CURS FROMYOUR_TABLE T WHERE(T.CODEV = '840') AND(T.DATEV = :REC_DATE) INTO:CURS1;
    SELECT FIRST 1T.CURS FROMYOUR_TABLE T WHERE(T.CODEV = '978') AND(T.DATEV = :REC_DATE) INTO:CURS2;
    SELECT FIRST 1T.CURS FROMYOUR_TABLE T WHERE(T.CODEV = '826') AND(T.DATEV = :REC_DATE) INTO:CURS3;
    SELECT FIRST 1T.CURS FROMYOUR_TABLE T WHERE(T.CODEV = '392') AND(T.DATEV = :REC_DATE) INTO:CURS4;

    SUSPEND;
    END
END

Я бы запрос формировал программно по справочнику валют (той таблице, на которую ссылается CodeV). На IBX сразу можешь забить, не позволит она такого. Попробуй FIBPlus.


RomanH   (2006-11-21 11:49:00) [9]

В том то и дело что список СodeV  может принимать неопределенное значение. Т.е пользователь выбирает CodeV.
А можно передавать в ХП массив типа integer;


Sergey13   (2006-11-21 11:42:00) [10]

А CodeV только такие могут быть? Или этот набор значений число непостоянное?

Если жестко 4 начения на дату, то каждое поле можно получать отдельным подзапросом. типа
select dateV, (select curs from ... where CodeV=840),(select curs from ... where CodeV=978)...
только производительность будет сам понимаешь.

Если это в отчете только надо, то это можно (вроде) сделать через крос-таб отчет.


RomanH   (2006-11-21 11:38:00) [11]

Ой результат должен быть таков
21.11.2006  26.640, 39.190, 50.489, 26.640
22.11.2006  26.640, 39.190, 50.489, 26.640

Извените что так задаю вопрос, подругому ни как не объяснить


Наверх

Титульная страница Поиск, карта сайта Написать письмо