Поиск по блогу

Обо мне.

Закончил ФМЛ № 31. Потом Челябинский Государственный Университет по специальности "Математик, Системный программист". Отслужил в Армии (Старший стрелок 1 МСО 3 МСВ 1 МСр 1 МСБ 205 ОМСкБр 49 Армия Южный Военный Округ. Г. Буденновск). Сейчас Работаю программистом и Танцую Хастл!!!
А также ищу достойную девушку для заведения семьи... и детей ;)

пятница, 27 января 2012 г.

Проект на работу


Вот эти два долбанных запроса надо было организовать в Delphi. Теорию я не знал совершенно. за 10 часов с перерывами я освоил основы :) Теперь у меня рабочая программа. правда пока не красивая.
========================
требуется построить SQL-запрос, который обеспечивал бы фильтрующий поиск информации по названию организации и по названиям городов почтового и юридического адреса. (Следует учесть, что поля могут заполняться в разных регистрах). И фильтр может быть пустым.
  select t_f.name, TUser.City_Name(t_f.jur_city_id), TUser.City_Name(t_f.post_city_id)
  from tuser.firm t_f
  where
  (:FIRM_NAME is NULL
   or
   upper(t_f.name)=upper(:FIRM_NAME)
  )
  and
  (:CITY_NAME_JUR is NULL
   or
   t_f.jur_city_id=
   (select t_c.city_id
    from TUser.city t_c
    where upper(t_c.name)=upper(:CITY_NAME_JUR)
   )
  )
  and
  (:CITY_NAME_POST is NULL
   or
   t_f.post_city_id=
   (select t_c.city_id
    from TUser.city t_c
    where upper(t_c.name)=upper(:CITY_NAME_POST)
   )
  )
  Order by t_f.name
Где:
     create or replace function CITY_NAME(iden number)
return varchar2 is
result varchar2(120) :='';
begin
   select upper(t.name)
   into result
   from TUser.City t
   where t.city_id=iden;
return result;
end;
========================
Требуется построить SQL-запрос, который обеспечивал бы вывод в шахматном виде (табличном) просуммированной информации (SUM) таблицы DOCUMENT. Столбцами таблицы должны быть МЕСЯЦы документов, строками должны быть ГОДа документов. Требуется ограничить документы по организациям (Поле DOCUMENT.FIRM_ID). Ограничение может быть пустым.

SELECT to_char(t.doc_date,'YYYY'),
SUM(CASE to_char(t.doc_date,'mm') WHEN '01' THEN t.sum ELSE 0 END) "Jan",
SUM(CASE to_char(t.doc_date,'mm') WHEN '02' THEN t.sum ELSE 0 END) "Feb",
SUM(CASE to_char(t.doc_date,'mm') WHEN '03' THEN t.sum ELSE 0 END) "Mar",
SUM(CASE to_char(t.doc_date,'mm') WHEN '04' THEN t.sum ELSE 0 END) "Apr",
SUM(CASE to_char(t.doc_date,'mm') WHEN '05' THEN t.sum ELSE 0 END) "Mai",
SUM(CASE to_char(t.doc_date,'mm') WHEN '06' THEN t.sum ELSE 0 END) "Jun",
SUM(CASE to_char(t.doc_date,'mm') WHEN '07' THEN t.sum ELSE 0 END) "Jul",
SUM(CASE to_char(t.doc_date,'mm') WHEN '08' THEN t.sum ELSE 0 END) "Aug",
SUM(CASE to_char(t.doc_date,'mm') WHEN '09' THEN t.sum ELSE 0 END) "Sep",
SUM(CASE to_char(t.doc_date,'mm') WHEN '10' THEN t.sum ELSE 0 END) "Oct",
SUM(CASE to_char(t.doc_date,'mm') WHEN '11' THEN t.sum ELSE 0 END) "Nav",
SUM(CASE to_char(t.doc_date,'mm') WHEN '12' THEN t.sum ELSE 0 END) "Dec"
FROM TUser.Document t
where  t.firm_id  in 
   (select t_f.firm_id
  from tuser.firm t_f
  where
  (:FIRM_NAME is NULL
   or
   upper(t_f.name)=upper(:FIRM_NAME)
  )
  and
  (:CITY_NAME_JUR is NULL
   or
   t_f.jur_city_id=
   (select t_c.city_id
    from TUser.city t_c
    where upper(t_c.name)=upper(:CITY_NAME_JUR)
   )
  )
  and
  (:CITY_NAME_POST is NULL
   or
   t_f.post_city_id=
   (select t_c.city_id
    from TUser.city t_c
    where upper(t_c.name)=upper(:CITY_NAME_POST)
   )
  )
   )
GROUP BY to_char(t.doc_date,'YYYY')
order by to_char(t.doc_date,'YYYY')


Комментариев нет:

Отправить комментарий