Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизПомогите составить запрос или подскажите что другое Найти похожие ветки
← →
Megabyte © (2006-11-08 17:37) [0]База: "ремонт телефонов".
Есть таблица Repair_progress, куда заносятся этапы ремонта телефона: переход на каждый этап - это новая запись.
Также у каждого ремонта(не этап, а ремонт конкретного телефона) есть уникальный идентификатор Repair_ID.
Есть поле, кот. показывает, на каком этапе находится телефон: Repair_State_ID.
Мне надо сделать запрос, в котором выдать, сколько cделал за сегодня конкретный человек. А также суммировать количество для группы(конкретная спеуиальность: техники-ремонтники, бригадиры, техник входного контроля).
Признак того, что телефон починен - это отгружен на склад: Repair_State_ID = 11.
user_link_group - связь специальности и логина пользователя.
right_group - специальности.
7000, 17000, 26000, 3000, 10000, 9000 - нужные мне специальности.
Я могу пока только сделать это в 2-х запросах:
Для каждого человека:select G.group_title, L.login, count(distinct P.repair_progress_id)
from repair_progress P, repair_progress R, user_list L, right_group G, user_link_group Gl
where (P.responsible_personal_id = L.personal_id) and (P.is_delete > 0) and
(R.repair_state_id = 11) and (P.repair_id = R.repair_id) and
(cast(P.progress_timestamp as date) = current_date)
and (L.User_List_id = Gl.user_list_id) and (G.right_group_id = Gl.right_group_id)
and (L.user_list_id = any(
select Lg.user_list_id
from user_link_group Lg
where Lg.right_group_id in (7000, 17000, 26000, 3000, 10000, 9000)))
group by G.group_title, L.login
Для группы:select G.group_title, count(distinct P.repair_progress_id)
from repair_progress P, repair_progress R, user_list L, right_group G,
user_link_group Gl
where (P.responsible_personal_id = L.personal_id) and (P.is_delete > 0) and
(R.repair_state_id = 11) and (P.repair_id = R.repair_id) and
(cast(P.progress_timestamp as date) = current_date)
and (L.User_List_id = Gl.user_list_id) and (G.right_group_id = Gl.right_group_id)
and (L.user_list_id = any(
select Lg.user_list_id
from user_link_group Lg
where Lg.right_group_id in (7000, 17000, 26000, 3000, 10000, 9000)))
group by G.group_title
Union"ом не могу возпользоваться, т.к. разное количество полей.
А хотелось бы в идеале получить такое, если это возможно вообще:
техник-ремонтник Иванов 6
техник-ремонтник Петров 8
техник-ремонтник Сидоров 12
26
бригадир Вова 20
бригадир Вася 30
50
и т.д.
Т.е. как бы двойная группировка: сначала по логину, а потом для группы логинов.
← →
ANB © (2006-11-08 18:12) [1]
> G.group_title, L.login
Склей эти 2 поля в одно и сделай union all
← →
evvcom © (2006-11-08 19:13) [2]Или для группы:
select G.group_title, null, count(distinct P.repair_progress_id)
и опять же union all
← →
Megabyte © (2006-11-09 09:18) [3]спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c