2015-05-13 4 views
1

Желаемой Выход:Как я могу объединить эти два заявления в подразделах выберите

пользователя - Closed - Open

Query 1: (Closed) 
select AM1.SYSMODUSER, COUNT(AM1.SYSMODUSER) 
from AuditLog AM1 
where AM1.SYSMODTIME > '2015-05-01' 
and AM1.SYSMODTIME < '2015-05-13' 
and AM1.NUMBER like '%IM%' 
and AM1.TYPE = 'Closed' 
and (AM1.SYSMODUSER = 'login1' 
or AM1.SYSMODUSER = 'login2') 

Query 2: (Open) 
select ASSIGNEE, count(record_id) 
from List1 
where "GROUP" = 'Records Compilation' 
and RECORD_ID like '%IM%' 
and ASSIGNEE is not null 
group by ASSIGNEE 

SYSMODUSER и ASSIGNEE один и те же имена входа.

Кроме того, если возможно, я хочу, чтобы он отображал логины, даже если они имеют нулевой или нулевой счет. В настоящее время, используя любой запрос, он возвращает только фактический счетчик. Если у пользователя нет закрытых или открытых задач, их имя даже не появляется в результирующем наборе. Было бы оптимально увидеть их имя с «0». Я предполагаю, что для этого требуется утверждение дела.

ответ

2

Полное внешнее объединение запросов, чтобы получить всех пользователей, даже если они имеются только в одном из двух запросов:

select 
    coalesce(open.userid, closed.userid) as userid, 
    coalesce(closed.cnt, 0) as closed, 
    coalesce(open.cnt, 0) as open 
from 
(
    select AM1.SYSMODUSER as userid, COUNT(AM1.SYSMODUSER) as cnt 
    from AuditLog AM1 
    where ... 
    GROUP BY AM1.SYSMODUSER 
) closed 
full outer join 
(
    select ASSIGNEE as userid, count(record_id) as cnt 
    from List1 
    where ... 
    group by ASSIGNEE 
) open on open.userid = closed.userid; 

(.. Может быть open это ключевое слово, если у вас есть проблемы, переименовать его)

в случае, если вы хотите, чтобы показать пользователям, которых нет ни в запросе, вам нужно таблицу пользователей, чтобы выбрать из:

select 
    user.id, 
    coalesce(closed.cnt, 0) as closed, 
    coalesce(open.cnt, 0) as open 
from user 
left outer join (<query 1 here>) open on open.userid = user.id 
left outer join (<query 2 here>) closed on closed.userid = user.id; 
+0

Благодарим вас за высоко оценили помощь! Я использую первый запрос, который вы написали, я получаю «неправильные синтаксические ошибки« рядом »), закрытые« и »), открытые на« - в конце операторов выбора. Обратите внимание, что я переименован в closed_tasks и opens_tasks –

+0

Упс, я забыл ОТ: P –

+0

Очень приятно. Огромное спасибо. Мне нравится ваш совет таблицы пользователей, но у нас нет чистой таблицы пользователей. Эти две таблицы содержат пользователей, хотя и «назначены». –

Смежные вопросы