r-studio
23-02-2020, 13:34
Решил открыть новую тему. Помогите, пожалуйста
Я джойню ряд таблиц
SELECT
asutNbd_violations.IncidentTypeID
,asutNbd_violations.IncidentID
,asutNbd_violations.ViolationDate as Date_NAR
,asutNbd_violations.BrigadeEnterpriseID
,asutNbd_violations.ViolationID as ID_SP_NAR,
incidents.IncidentDate,
incidents.RouteID,
incidents.PersID,
-- incidents.CasseteID,
incidents.MIPersID as 'машинист инструктор'
/* ,routes_personal.RouteID
,routes_personal.PersRegID
,routes_personal.RoutePostID
,routes_personal.BeginDate
,routes_personal.EndDate
,routes_personal.RouteDate*/
,personal_registration.EnterpriseID
--,personal_registration.DateFrom
, CASE
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 1 THEN 'group_0to1y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 1 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 4 THEN 'group_1to3y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 4 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 8 THEN 'group_3to8y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 8 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 12 THEN 'group_8to12y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 12 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 20 THEN 'group_12to20y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 20 THEN 'group_20y'
ELSE NULL
END AS DateFrom
,personal_registration.DateTo
,personal_registration.TabNum
,personal_registration.IsDetached as 'уволен или нет'
,personal.LastName
,personal.FirstName
,personal.PatrName
,personal.CurrEnterpriseID as KOD_DEPO
,personal.CurrDateTo
,personal.CurrTabNum
,personal.CurrIsDetached
,personal.MainTabNum as 'основной персонал это табельники людей'
FROM asutNbd_violations
inner JOIN incidents ON [report_send230Fail].RouteID = incidents.RouteID
and [report_send230Fail].Date = incidents.IncidentDate
--получаем табельники , ФИО, а также лиц которые есть в инциденте
inner JOIN personal_registration AS PR5 ON incidents.PersID = PR5.[PersID]
-- затем получаем код деп
inner JOIN personal ON personal_registration.[DateTo] = personal.[CurrDateTo]
and personal_registration.[TabNum] = personal.[CurrTabNum]
-- затем получаем id sp nar, date nar, MI
inner JOIN incidents ON asutNbd_violations.CasseteID = incidents.CasseteID
но получаю ошибки вида
Сообщение 4104, уровень 16, состояние 1, строка 56
The multi-part identifier "report_send230Fail.RouteID" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 57
The multi-part identifier "report_send230Fail.Date" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 61
The multi-part identifier "personal_registration.DateTo" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 62
The multi-part identifier "personal_registration.TabNum" could not be bound.
Сообщение 1013, уровень 16, состояние 1, строка 1
The objects "incidents" and "incidents" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
Как мне сделать,чтобы последовательность была соблюдена. Помогите, пожалуйста
Я джойню ряд таблиц
SELECT
asutNbd_violations.IncidentTypeID
,asutNbd_violations.IncidentID
,asutNbd_violations.ViolationDate as Date_NAR
,asutNbd_violations.BrigadeEnterpriseID
,asutNbd_violations.ViolationID as ID_SP_NAR,
incidents.IncidentDate,
incidents.RouteID,
incidents.PersID,
-- incidents.CasseteID,
incidents.MIPersID as 'машинист инструктор'
/* ,routes_personal.RouteID
,routes_personal.PersRegID
,routes_personal.RoutePostID
,routes_personal.BeginDate
,routes_personal.EndDate
,routes_personal.RouteDate*/
,personal_registration.EnterpriseID
--,personal_registration.DateFrom
, CASE
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 1 THEN 'group_0to1y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 1 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 4 THEN 'group_1to3y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 4 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 8 THEN 'group_3to8y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 8 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 12 THEN 'group_8to12y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 12 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 20 THEN 'group_12to20y'
WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 20 THEN 'group_20y'
ELSE NULL
END AS DateFrom
,personal_registration.DateTo
,personal_registration.TabNum
,personal_registration.IsDetached as 'уволен или нет'
,personal.LastName
,personal.FirstName
,personal.PatrName
,personal.CurrEnterpriseID as KOD_DEPO
,personal.CurrDateTo
,personal.CurrTabNum
,personal.CurrIsDetached
,personal.MainTabNum as 'основной персонал это табельники людей'
FROM asutNbd_violations
inner JOIN incidents ON [report_send230Fail].RouteID = incidents.RouteID
and [report_send230Fail].Date = incidents.IncidentDate
--получаем табельники , ФИО, а также лиц которые есть в инциденте
inner JOIN personal_registration AS PR5 ON incidents.PersID = PR5.[PersID]
-- затем получаем код деп
inner JOIN personal ON personal_registration.[DateTo] = personal.[CurrDateTo]
and personal_registration.[TabNum] = personal.[CurrTabNum]
-- затем получаем id sp nar, date nar, MI
inner JOIN incidents ON asutNbd_violations.CasseteID = incidents.CasseteID
но получаю ошибки вида
Сообщение 4104, уровень 16, состояние 1, строка 56
The multi-part identifier "report_send230Fail.RouteID" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 57
The multi-part identifier "report_send230Fail.Date" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 61
The multi-part identifier "personal_registration.DateTo" could not be bound.
Сообщение 4104, уровень 16, состояние 1, строка 62
The multi-part identifier "personal_registration.TabNum" could not be bound.
Сообщение 1013, уровень 16, состояние 1, строка 1
The objects "incidents" and "incidents" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
Как мне сделать,чтобы последовательность была соблюдена. Помогите, пожалуйста