Я не знаю, как ваш второй запрос работает для вас «в SQL» (где это должно быть? Вы имеете в виду SSMS = SQL Server Management Studio?), Но я уверен, что он не может работать в любомверсия SQL Server, которая существует на данный момент.Это из-за этого подзапроса в списке SELECT:
(select TmpInstallerID, TmpConfirmDate, TmpConfirmLocalTime from @tmpTableResults where TmpInstallerID = FxWorkorder.INSTALLERSYSID)
Дело в том, что каждое выражение в предложении SELECT должно быть скалярным, но этот подзапрос возвращает строку более чем одного значения,Даже если это только одна строка, она там недопустима, поскольку возвращает несколько столбцов.Подзапрос в этом контексте должен возвращать не более одного значения, то есть это должен быть один столбец, а полученный результат не должен содержать ни одной строки, или только одну.
Вместо этого вы можете попробовать этот запрос (хотя я неполностью уверен, не зная больше деталей о вашей схеме):
SELECT
RoutingGroup.SDESCRIPTION,
FxWorkorder.INSTALLERSYSID,
FxWorkOrder.JOBSTATUS,
Install.FOXTELCODE,
install.NAME, FxWorkOrder.ScheduledDate,
count(*) as TotalJobs, COUNT(CONFIRMDATE) as ConfirmedJobs,
tmp.TmpInstallerID,
tmp.TmpConfirmDate,
tmp.TmpConfirmLocalTime
from FxWorkorder
join install on fxworkorder.INSTALLERSYSID = install.sysid
join RouteGroupWorkarea on FxWorkOrder.WORKAREAGROUPSYSID = RouteGroupWorkarea.IWORKAREA_ID
join RoutingGroup on RouteGroupWorkarea.IRG_ID = RoutingGroup.IRG_IDENTITY
join @tmpTableResults tmp ON tmp.TmpInstallerID = FxWorkorder.INSTALLERSYSID
where FxWorkorder.SCHEDULEDDATE > = @StartDate
and FxWorkorder.SCHEDULEDDATE <= @EndDate
and FxWorkOrder.Jobstatus <> 'Unassign'
and FxWorkOrder.Jobstatus <> 'Route'
and Install.FOXTELCODE <> ''
group by
RoutingGroup.SDESCRIPTION,
FxWorkOrder.INSTALLERSYSID,
FxWorkOrder.JOBSTATUS,
Install.FOXTELCODE,install.NAME,
FxWorkOrder.ScheduledDate,
FxWorkOrder.WORKAREAGROUPSYSID
tmp.TmpInstallerID,
tmp.TmpConfirmDate,
tmp.TmpConfirmLocalTime
То есть я добавил еще одно объединение, одно к @tmpTableResults
, а также добавил столбцы, которые вы пытались вытянуть в SELECT
и к GROUP BY
.
Кроме того, на вашем месте я бы рассмотрел использование коротких псевдонимов для таблиц, например:
SELECT
…
wo.INSTALLERSYSID,
wo.JOBSTATUS,
…
from FxWorkorder wo
join …
Это может сделать ваши запросы болеечитаемый.