转换 BIGINT 以显示为 Nvarchar 列

Converting BIGINT to display as Nvarchar Column

我正在尝试为已设置报告的报告编辑查询,但是我 运行 在尝试将 BigInt (USERID) 列转换为 Nvarchar(150 ) (FIRST_NAME) 来自另一个 table 的列,用于我需要对整个查询进行的一个特定更改。

Table结构如下(删除了一些不必要的列,因为基本上唯一重要的列是“USERID,REPORTINGTO)

Table 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

Table B (AAAUSER)

USER_ID FIRST_NAME
34  Name 34
35  Name 35
36  Name 36

在 REPORTINGTO 列中,它正在提取 USERID,它引用了正确的经理,但不是 suitable 用于报告目的;我们需要显示 Table B 中的 "FIRST_NAME"。(first_name 与 table A 中的 FirstName 不同)

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

这会将 table 输出为

Tech        Title                       Manager
Full Name 1 Senior Technical Consultant 26
Full Name 2 Senior Technical Consultant 53211

而我希望管理器从 Table B 显示为 "FIRST_NAME";而不是与该经理关联的 "USERID"。

任何正确方向的帮助或推动将不胜感激。 Cast/Convert 似乎是可行的方法,但到目前为止我还无法成功输入它。

没有什么能阻止您加入同一个 table 两次:

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

提示:

  • 我删除了 helpdeskcrew,因为您似乎没有使用它,而且我不希望未定义的 table 出现额外的视觉混乱 - 请随时将其添加回
  • 有时 sdu 中的经理 ID 为空,因此在加入 Aaauser table 时必须保留加入经理名称,否则这些行将消失
  • 不要在列名别名周围使用 '。在 SQL 中,' 用于字符串,"(或无)用于标识符
  • 您可以根据需要多次将 table 加入到查询中,如果主要 table 出于多种不同原因引用 table
  • 你因为不同的原因不得不多次加入;您不能 OR 一次使用 table。多次加入它并给每个 table 一个描述目的的别名 - 在这里我为普通用户使用 au (因为你这样做了)和 mu 为 "managinguser" -即管理用户的管理员