2016-04-05 11 views
1

Ich habe die folgende Abfrage unter:SQL Inner Join Hilfe benötigt

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 

und ich immer die folgende Fehlermeldung erhalten:

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

Was kann ich dieses Problem beheben?

+3

ich für einen Wert in der Spalte ItemNumber, die in der Tat umgesetzt werden kann nicht aussehen würde int. Und wenn Sie erwarten, dass Werte ein int sind, speichern Sie sie als int! –

+0

also hoffe meine antwort hat dir geholfen. Wenn ja, bitte als Antwort markieren? – workabyte

Antwort

1

Sie können für jede Tabelle einen separaten Auswahl tun, die Sie beitreten und verwenden ISNUMERIC nur die Zeilen zu ziehen, die nicht numerisch sind, so dass Sie besser Ihr Problem identifizieren und sehen, welche Werte nicht numerisch sind

so etwas wie

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

oder in Sie kommen, so etwas wie

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 
)