我正在尝试编辑针对已设置为报告的报告的查询,但是在尝试将BigInt(USERID)列转换为Nvarchar(150)(FIRST_NAME)列时遇到了一些问题我需要对整个查询进行一个特定更改的另一个表。
表结构如下(删除了一些不必要的列,因为实际上唯一重要的列是“ USERID,REPORTINGTO”)
表A(SDU)
USERID FIRSTNAME LASTNAME REPORTINGTO
28 Name 28 Surname 28 NULL
29 Name 29 Surname 29 36
30 Name 30 Surname 30 40
31 Name 31 Surname 31 53211
32 Name 32 Surname 32 40
33 Name 33 Surname 33 53211
34 Name 34 Surname 34 NULL
35 Name 35 Surname 35 40
36 Name 36 Surname 36 26
表B(AAAUSER)
USER_ID FIRST_NAME
34 Name 34
35 Name 35
36 Name 36
在REPORTINGTO列中,它正在拉USERID,该USERID引用了正确的管理器,但不适用于报告目的;我们需要显示表B中的“ FIRST_NAME”。(名字与表A中的名字不同)
select
au.FIRST_NAME 'Tech'
,sdu.JOBTITLE 'Title'
,sdu.REPORTINGTO 'Manager'
from
AaaUser au
join HelpDeskCrew hdc on au.USER_ID = hdc.TECHNICIANID
join SDUser sdu on au.USER_ID = sdu.USERID
这会将表格输出为
Tech Title Manager
Full Name 1 Senior Technical Consultant 26
Full Name 2 Senior Technical Consultant 53211
我希望Manager在表B中显示为“ FIRST_NAME”;而不是与该Manager关联的“ USERID”。
任何对正确方向的帮助或推动将不胜感激。似乎Cast / Convert是要走的路,但是到目前为止,我一直无法成功输入。
答案 0 :(得分:0)
没有什么可以阻止您两次连接同一张表:
select
sdi.USERID as TechID
,au.FIRST_NAME as TechName
,sdu.JOBTITLE as Title
,sdu.REPORTINGTO as ManagerID
,mu.FIRST_NAME as ManagerName
from
SDUser sdu
INNER JOIN AaaUser au on au.USER_ID = sdu.USERID
LEFT OUTER JOIN AaaUser mu on mu.USER_ID = sdu.REPORTINGTO
提示:
au
用作普通用户(因为您这样做了),将mu
用作“ managinguser”(即管理用户的经理)用户