【问题标题】:Converting BIGINT to display as Nvarchar Column将 BIGINT 转换为显示为 Nvarchar 列
【发布时间】:2019-05-14 10:25:05
【问题描述】:

我正在尝试为已设置报告的报告编辑查询,但是我在尝试将 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,它引用了正确的经理,但不适用于报告目的;我们需要显示表 B 中的“FIRST_NAME”。(first_name 与表 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

这会将表格输出为

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

而我希望经理在表 B 中显示为“FIRST_NAME”;而不是与该 Manager 关联的“USERID”。

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

【问题讨论】:

  • 我已编辑您的数据以重新格式化它,以便数据与列标题对齐。如果不正确,请更新它,因为如果没有这种对齐方式,您的帖子会更难理解

标签: sql casting type-conversion ssrs-2012


【解决方案1】:

没有什么能阻止你两次加入同一张桌子:

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,因为您似乎没有使用它,而且我不希望未定义的表格出现额外的视觉混乱 - 请随时将其重新添加
  • 有时 sdu 中的经理 id 为空,因此在加入 Aaauser 表以获取经理名称时,必须保持加入状态,否则这些行将消失
  • 不要在列名别名周围使用 '。在 SQL 中,' 用于字符串,而 "(或无)用于标识符
  • 如果主表出于多种不同原因引用该表,您可以根据需要多次将表连接到查询中,并且确实应该这样做
  • 由于不同的原因,你必须多次加入;你不能 OR 一次使用该表。多次加入它并给每个表一个描述目的的别名 - 这里我使用au 表示普通用户(因为你这样做了)和mu 用于“managinguser” - 即管理用户的经理

【讨论】:

  • 谢谢! helpdeskcrew 是更大查询的一部分,所以我把它加回来了!感谢有关将同一个表多次加入查询的额外 cmets,将来会更多地使用它。
猜你喜欢
  • 1970-01-01
  • 2015-07-23
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
相关资源
最近更新 更多