我创建一个SQL查询。我需要为我的分析加入许多表格
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
,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
,personal.LastName
,personal.FirstName
,personal.PatrName
,personal.CurrEnterpriseID as KOD_DEPO
FROM
asutNbd_violations
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]
INNER JOIN
incidents ON asutNbd_violations.CasseteID = incidents.CasseteID
INNER JOIN
routes_personal ON incidents.RouteID = routes_personal.RouteID
INNER JOIN
routes_personal ON [report_routesIssue].[RouteDate] = routes_personal.[RouteDate]
INNER JOIN
incidents ON [report_routesIssue].[RouteDate] = incidents.IncidentDate但是当我运行它时,我会发现这些错误:
消息4104,16级,状态1,第57行
多部分标识符"incidents.PersID“无法绑定。
消息4104,第16级,状态1,第59行
多部分标识符"personal_registration.DateTo“无法绑定。
消息4104,第16级,状态1,第60行
多部分标识符"personal_registration.TabNum“无法绑定。
消息1013,第16级,状态1,第1行
FROM子句中的对象"routes_personal“和"routes_personal”具有相同的公开名称。使用相关名称来区分它们。
我参加过几次同样的桌子。
我认为这件事是化名的。我只是不知道怎么说才对。
你能帮我看一下我的查询并建议如何插入别名吗?我所能看到的就是personal_registration表中的问题
发布于 2020-02-23 13:07:02
所有表都需要表别名,特别是在FROM子句中多次提到的表别名。然后,需要在整个查询过程中使用这些别名。
在FROM子句中有一些可疑的东西:
routes_personal是引用的,根本没有引用twice.report_routesIssue。我认为第二个routes_personal应该是这个routes_personal被引用了两次。第二个只在日期加入,这似乎相当危险。我想这是个错误。解决这些问题后,您将得到一个类似于以下内容的查询:
SELECT av.s.IncidentTypeID, av.IncidentID, av.ViolationDate as Date_NAR
av.BrigadeEnterpriseID, av.ViolationID as ID_SP_NAR,
i.IncidentDate, i.RouteID,
. . . -- and so on
FROM asutNbd_violations av JOIN
personal_registration pr
ON i.PersID = pr.[PersID] JOIN
personal p
ON pr.[DateTo] = p.[CurrDateTo] AND
pr.[TabNum] = p.[CurrTabNum] JOIN
incidents i
ON av.CasseteID = i.CasseteID JOIN
routes_personal rp
ON i.RouteID = rp.RouteID JOIN
report_routesIssue rri -- LOOKS LIKE AN ERROR HERE
ON rri.[RouteDate] = rp.[RouteDate] /* JOIN
incidents rri_i
ON rri.[RouteDate] = i.IncidentDate */我不知道是否需要第二个incidents引用。
https://stackoverflow.com/questions/60360807
复制相似问题