SQL 需要内部联接帮助

SQL Inner Join Help Needed

我有以下查询:

SELECT 
[dbo].[history].histtable,
[dbo].[history].code,
[dbo].[history].Date,
dbo.Activities.Number,
dbo.table1.Itemnumber

FROM [dbo].[History]
INNER JOIN 
[dbo].[Activities]
ON
[dbo].[History].Flags=[dbo].[Activities].Objects

INNER JOIN dbo.table1 
On
CONVERT (Int, dbo.table1.Itemnumber) = CONVERT (INT, dbo.history.Date)
OR CONVERT (Int, dbo.tablenumber.Itemnumber) = dbo.Activities.Alltransactions

ORDER BY 3 DESC

我不断收到以下错误:

Conversion failed when converting the varchar value Itemnumber to data type int.

我该怎么做才能解决这个问题?

您可以为每个要加入的 table 做一个单独的 select 并使用 ISNUMERIC 只提取非数字的行,这样您可以更好地识别您的问题并查看哪些值不是数字

类似于

select Itemnumber
from dbo.table1 
where IsNumeric(Itemnumber) = 0

或者在你加入时,类似

INNER JOIN dbo.table1 
On IsNumeric(dbo.table1.Itemnumber) = 1 
and 
(
    CONVERT (Int, dbo.table1.Itemnumber) = CONVERT (INT, dbo.history.Date)
OR
    CONVERT (Int, dbo.tablenumber.Itemnumber) = dbo.Activities.Alltransactions
)