Я пытаюсь выполнить запрос, который вернет список заявок, открытых и разрешенных из нашей системы заявок инженером для служб отчетов.
В настоящее время у нас есть запрос, который делает это, без привязки к инженеру; поэтому я пытаюсь вернуться из этого, и я думаю, что я почти там, но я столкнулся с проблемой (я довольно плохо знаком с SQL)
Ошибка, которую я получаю: Сообщение 4104, уровень 16, состояние 1, строка 9
Не удалось связать идентификатор из нескольких частей «au.FIRST_NAME».
Я думаю, что это так, как я включил объединения для wos.OWNERID и au.USER_ID в другие объединения, но при попытке использовать левое внешнее объединение после всех других или до этого я получаю ошибку за неправильное синтаксис последнего оператора Where.
Соответствующие подробности таблицы:
Таблица AAAUSER
USER_ID FIRST_NAME
1 System
2 $DEPT_HEAD$
3 Guest
ТАБЛИЦА РАБОЧЕГО СОСТОЯНИЯ
WORKORDERID OWNERID
226 84161
521297 84161
521968 94
Запрос ниже (Обратите внимание, что каждая таблица, исключая «Измерение даты», находится в базе данных ServiceDesk, в отличие от базы данных ServiceDeskExtras в начале запроса.
select
dd.[Date] 'Date'
,format(dd.date,'dd/MM/yyyy','en-gb') 'DisplayDate'
,Logged.Tickets 'Tickets Logged'
,Closed.Tickets 'Tickets Resolved'
,count(OpenTickets.Tickets) 'Open Tickets'
,au.FIRST_NAME 'Technician'
from
ServiceDeskExtras.dbo.DateDimension dd
left join (
select
convert(date,dateadd(s,convert(bigint,wo.CREATEDTIME)/1000,convert(datetime,'1-1-1970'))) 'Date'
,count(wo.workorderid) 'Tickets'
from
WorkOrder wo
join AccountSiteMapping asm on wo.SITEID = asm.SITEID
join AccountDefinition ad on asm.ACCOUNTID = ad.ORG_ID
left join WORKORDERDELETEHISTORY wodh on wo.WORKORDERID = wodh.WORKORDERID
join WorkOrderStates wos on wo.WORKORDERID = wos.WORKORDERID
join AaaUser au on wos.OWNERID = au.USER_ID
join PriorityDefinition pd on wos.PRIORITYID = pd.PRIORITYID
join requesttypedefinition rtd on wos.requesttypeid = rtd.requesttypeid
--join SDOrganization sdo on wo.SITEID = sdo.ORG_ID
--join SiteDefinition sd on wo.SITEID = sd.SITEID
--join RegionDefinition rd on sd.REGIONID = rd.REGIONID
where
ad.ORG_NAME = 'CUSTOMER NAME'
and pd.PRIORITYNAME in ('P1','P2','P3','P4')
and wodh.WORKORDERID is null
and rtd.name <> 'Automatic Monitoring'
group by
convert(date,dateadd(s,convert(bigint,wo.CREATEDTIME)/1000,convert(datetime,'1-1-1970')))
) Logged on dd.[Date] = Logged.Date
left join (
select
convert(date,dateadd(s,convert(bigint,wo.resolvedtime)/1000,convert(datetime,'1-1-1970'))) 'Date'
,count(wo.workorderid) 'Tickets'
from
WorkOrder wo
join AccountSiteMapping asm on wo.SITEID = asm.SITEID
join AccountDefinition ad on asm.ACCOUNTID = ad.ORG_ID
left join WORKORDERDELETEHISTORY wodh on wo.WORKORDERID = wodh.WORKORDERID
join WorkOrderStates wos on wo.WORKORDERID = wos.WORKORDERID
join AaaUser au on wos.OWNERID = au.USER_ID
join PriorityDefinition pd on wos.PRIORITYID = pd.PRIORITYID
join requesttypedefinition rtd on wos.requesttypeid = rtd.requesttypeid
--join SDOrganization sdo on wo.SITEID = sdo.ORG_ID
--join SiteDefinition sd on wo.SITEID = sd.SITEID
--join RegionDefinition rd on sd.REGIONID = rd.REGIONID
where
ad.ORG_NAME = 'CUSTOMER NAME'
and pd.PRIORITYNAME in ('P1','P2','P3','P4')
and wodh.WORKORDERID is null
and rtd.name <> 'Automatic Monitoring'
group by
convert(date,dateadd(s,convert(bigint,wo.resolvedtime)/1000,convert(datetime,'1-1-1970')))
) Closed on dd.date = Closed.Date
left join (
select
wo.workorderid 'Tickets'
,dateadd(s,wo.CREATEDTIME/1000,convert(datetime,'1-1-1970')) 'Logged'
,dateadd(s,wo.resolvedtime/1000,convert(datetime,'1-1-1970')) 'Resolved'
from
workorder wo
join AccountSiteMapping asm on wo.SITEID = asm.SITEID
join AccountDefinition ad on asm.ACCOUNTID = ad.ORG_ID
left join WORKORDERDELETEHISTORY wodh on wo.WORKORDERID = wodh.WORKORDERID
join WorkOrderStates wos on wo.WORKORDERID = wos.WORKORDERID
join AaaUser au on wos.OWNERID = au.USER_ID
join PriorityDefinition pd on wos.PRIORITYID = pd.PRIORITYID
join requesttypedefinition rtd on wos.requesttypeid = rtd.requesttypeid
--join SDOrganization sdo on wo.SITEID = sdo.ORG_ID
--join SiteDefinition sd on wo.SITEID = sd.SITEID
--join RegionDefinition rd on sd.REGIONID = rd.REGIONID
where
ad.ORG_NAME = 'CUSTOMER NAME'
and pd.PRIORITYNAME in ('P1','P2','P3','P4')
and wodh.WORKORDERID is null
and rtd.name <> 'Automatic Monitoring'
) OpenTickets on dateadd(dd,1,dd.date) > OpenTickets.Logged and (dateadd(dd,1,dd.date) <= OpenTickets.Resolved or datediff(dd,convert(datetime,'1-1-1970'),opentickets.resolved) = 0)
where
dd.[Date] >= dateadd(d,-7,@date)
and dd.[Date] < @date
group by
dd.[Date]
,logged.Tickets
,closed.Tickets
order by
dd.[Date]
Ожидаемый результат будет для техников, чтобы перечислить в том же столбце, чтобы я мог добавить к отчету Журналы, зарегистрированные против Решено техником.
Любая помощь очень ценится - я хочу понять, где мне нужно разместить это в запросе, чтобы я знал в будущем, как правильно отформатировать это!
Спасибо
Andy