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

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

VIEW [D5, IB5.x]


Ruslan. ©   (2003-04-22 14:15:00) 

Как сохранить результат запроса как новая таблица?
Т.е. что бы запрос не возвращал результат а создавал новую таблицу и кидал результат в эту таблицу. Я сделал бы это с помощью виртуальных таблиц (VIEW) но там не поддерживаются UNION, GROUP BY и др.


Val   (2003-04-22 16:58:00) [1]

>Ruslan. (22.04.03 15:17)
прислушайтесь к Жук © (22.04.03 15:36).
а потом обыкновенный селект из хп.


SiJack   (2003-04-22 16:09:00) [2]

Select ... into может поможет


Жук   (2003-04-22 15:36:00) [3]

Напишите ХП для вычисления стажа.


Ruslan.   (2003-04-22 15:17:00) [4]

Есть две таблицы:
1)REESTRADV
(CODE,REGNOM,FAMILIYA)
2)ANKETA
(A_CODE,LINK,
DATE_IN,-дата поступления на работу
DATE_OUT)-дата увольнения

-----------------------------------------------------------
select REGNOM,LINK, FAMILIYA,
CAST(SUM(((DATE_OUT-DATE_IN)/365))-0.5 as integer) as stag,
from reestradv JOIN anketa on
ANKETA.LINK=REESTRADV.CODE
WHERE DATE_OUT IS NOT NULL
GROUP BY ANKETA.LINK,reestradv.code,reestradv.regnom,
reestradv.FAMILIYA

UNION

select REGNOM,LINK,FAMILIYA,
CAST(SUM((("TODAY"-DATE_IN)/365))-0.5 as integer) as stag,
from reestradv JOIN anketa on
ANKETA.LINK=REESTRADV.CODE
WHERE DATE_OUT IS NULL
GROUP BY ANKETA.LINK,reestradv.code,reestradv.regnom,
reestradv.FAMILIYA

В результате такого запроса получается:

------------------------------
|РЕГ.НОМЕР |LINK|ФАМИЛИЯ|Стаж|
------------------------------
|1 |1 |ИВАНОВ | 3 | - если есть дата увольнения
------------------------------
|1 |1 |ИВАНОВ | 2 | - это если нет дата увольнения то от текущей
------------------------------ даты вычитается дата поступления на работу
|2 | 2 |ПЕТРОВ | 2 |
------------------------------
|2 | 2 | ПЕТРОВ| 4 |
------------------------------


Как сделать общую группировку и суммирование стажа в этом запросе

На счет философского смысла: я хотел сделать этот запрос как отдельную таблицу(VIEW) и при выборке
сгруппировать повторяющиеся записи с суммированием в поле стаж.

Подскажите пожалуйста может все это по проще можно сделать, а я тут ерундой занимаюсь.
Заранее спасибо.


Val   (2003-04-22 14:47:00) [5]

угу, разъясните, будьте любезны, а то чем-то нехорошим попахивает.


Johnmen   (2003-04-22 14:22:00) [6]

В чем философский смысл ?


Наверх

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