1

望ましい出力:

ユーザー -- クローズ -- オープン

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 は同じログイン名を共有します。

また、可能であれば、ログイン数が null またはゼロの場合でもログインを表示したいと考えています。現在、どちらのクエリを使用しても、実際のカウントのみが返されます。ユーザーが閉じたタスクまたは開いているタスクを持っていない場合、ユーザーの名前は結果セットにも表示されません。名前を「0」で表示するのが最適です。これにはケースステートメントが必要だと思います。

4

1 に答える 1

2

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;
于 2015-05-13T14:49:50.113 に答える