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

Вниз

Замысловатый SQL-запрос   Найти похожие ветки 

 
RomanH ©   (2006-11-21 11:36) [0]

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

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
У меня просто ни каких вариантов не имеется для решения
этой задачи.Помогите.


 
RomanH ©   (2006-11-21 11:38) [1]

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

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


 
Sergey13 ©   (2006-11-21 11:42) [2]

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

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

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


 
RomanH ©   (2006-11-21 11:49) [3]

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


 
PEAKTOP ©   (2006-11-21 15:28) [4]


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 FROM YOUR_TABLE Y INTO :REC_DATE
 DO
   BEGIN

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

   SUSPEND;
   END
END

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


 
RomanH ©   (2006-11-21 18:40) [5]

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


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


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

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


 
Kolan ©   (2006-11-21 19:02) [7]

Сделай хранимую процедуру. Была похожая задача.
http://delphimaster.net/view/3-1163160336/

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


 
Kolan ©   (2006-11-21 19:13) [8]

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


 
Anatoly Podgoretsky ©   (2006-11-21 22:18) [9]

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

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


 
YurkaT ©   (2006-11-22 21:58) [10]

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


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


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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.051 c
15-1169407250
Chuk & Gek
2007-01-21 22:20
2007.02.11
Вопрос к тем, кто разбирается


2-1169556864
kyn66
2007-01-23 15:54
2007.02.11
У ListBox глючит событие ListBox1DrawItem ???


2-1169799293
whitebarin
2007-01-26 11:14
2007.02.11
Сообщение в приветствии WindowsXP, как у AVP 6.0


2-1169556713
sergeyst
2007-01-23 15:51
2007.02.11
освобождение ресурсов


5-1148464800
georgius
2006-05-24 14:00
2007.02.11
Как создать events у Frame или у Form?