你能帮我解决这个问题吗?我必须使用内连接进行查询以从不同的表中获取数据。
这是我的疑问:
select
a.DocEntry,
a.CardName,
a.Address,
a.Address2,
a.CardCode,
a.TaxDate,
b.Dscription,
b.Quantity,
b.Price,
b.GTotal,
b.WhsCode,
c.WhsName,
d.CompnyName,
d.CompnyAddr,
d.Phone1,
e.U_NAME
from OPOR a
inner join POR1 b on a.DocEntry = b.DocEntry
inner join OWHS c on a.DocEntry = c.WhsCode
inner join OADM d on a.DocEntry = d.CompnyName
inner join OUSR e on a.DocEntry = e.U_NAME
where b.DocEntry = 36
但是我收到了这个错误:
Msg 245,Level 16,State 1,Line 1将nvarchar值'OEC Computers UK'转换为数据类型int时转换失败。
答案 0 :(得分:0)
您正在将NVarchar
列与int
值或列进行比较。
如果此列包含至少一个无法转换的值,则抛出您提供的异常。 (sql server无法隐式解析值)
检查查询的这一部分,看起来像是在varchar列和整数列上进行连接
inner join OADM d on a.DocEntry = d.CompnyName
inner join OUSR e on a.DocEntry = e.U_NAME
如果有必要 - (不建议这样做) - 要进行类似的加入,您必须将int
列转换为nvarchar
ex:
inner join OUSR e on CAST(a.DocEntry AS NVARCHAR(255)) = e.U_NAME
以及
如果DocEntry
的数据类型为NVarchar
,则可能会抛出异常
b.DocEntry = 36
所以你必须使用而不是它
b.DocEntry = '36'
答案 1 :(得分:-1)
什么类型的列“DocEntry”,“WhsCode”,“CompnyName”,“U_NAME”?
“OEC Computers UK”无法转换为整数。
该列的数据必须是数字,否则您无法对其进行比较。