转换 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" -即管理用户的管理员
我正在尝试为已设置报告的报告编辑查询,但是我 运行 在尝试将 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" -即管理用户的管理员