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

Вниз

Замысловатый 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.054 c
1-1166606045
Stanislav
2006-12-20 12:14
2007.02.11
Как не загружать весь image в опреативку?


15-1169369047
властелин колхоза
2007-01-21 11:44
2007.02.11
Я фигею с этих статей...


15-1169438175
Slider007
2007-01-22 06:56
2007.02.11
С днем рождения ! 20 января


15-1169137288
Marser
2007-01-18 19:21
2007.02.11
Крик души


2-1169549102
alexey_mas
2007-01-23 13:45
2007.02.11
создание формы в run_time





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский