从其他表问题中选择列值

时间:2018-08-31 07:11:58

标签: sql sql-server

employee表中,我有一个名为Department的列,该列以数字格式存储数据。我希望该部门的实际值位于名为combovalues的不同表中。这是查询。

SELECT e.id, 
       e.code, 
       (SELECT combovalue 
        FROM   dbo.combovalues 
        WHERE  id = e.department) AS [DEPARTMENT] 
FROM   dbo.employee e 
WHERE  e.department = 'Admin' 

现在我想根据实际值查询部门,但这给了我错误:-

  

将varchar值“ Admin”转换为数据时,转换失败   输入int。

2 个答案:

答案 0 :(得分:0)

错误的直接原因是,使用相关子查询计算的<span class="a-button"> <span class="a-button-inner"> <button onclick="f1()" class="a-button-text" type="button">Search</button> </span> </span>别名在DEPARTMENT子句中不可用。但是我只是将您的查询写为联接来解决此问题:

WHERE

请注意,您可以通过子查询当前查询来使当前方法有效:

SELECT
    e.id, 
    e.code, 
    COALESCE(c.combovalue, 'NA') AS combovalue
FROM dbo.employee e
LEFT JOIN dbo.combovalues c
    ON c.id = e.department AND c.combovalue = 'Admin';

但这是冗长的,不是必需的,因为联接是更好的方法。

答案 1 :(得分:0)

尝试内部联接:

SELECT e.id, 
       e.code FROM   dbo.employee e 
inner join  dbo.combovalues c
        on  c.id = e.department
WHERE  c.combovalue = 'Admin'