2016-04-05 4 views
1

У меня есть следующий запрос ниже:SQL Inner Регистрация Помощь Необходим

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.

Что я могу сделать, чтобы исправить это?

+3

Я хотел бы посмотреть на значение в колонке ItemNumber, которая на самом деле не может быть преобразован в внутр. И если вы ожидаете, что значения будут int, сохраните их как int! –

+0

так надеюсь, что мой ответ помог вам. если так, пожалуйста, отметьте в качестве ответа? – workabyte

ответ

1

вы можете сделать отдельный выбор для каждой таблицы, Вы присоединяетесь и использовать 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 
)