在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。
答案 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'