2016-08-23 3 views
1

Я получаю ошибку в SQL Server для кода.Ошибка запроса SQL Server для типа преобразования

SQL код:

SELECT DISTINCT 
    HEADER.PONUMBER, 
    SName, 
    CompanyName 
FROM 
    HEADER 
INNER JOIN 
    PDetails ON HEADER.PONUMBER = PDetails.PoNumber 
INNER JOIN 
    FAN_P ON PDetails.PurchaseOrderID = FAN_P.PurchaseOrderID  

Сообщение об ошибке:

Конверсия удалось при преобразовании значения VARCHAR 'PO321211' к типу данных междунар.

Не могли бы вы мне помочь?

Спасибо!

+1

Опубликуйте схема –

ответ

2

Ошибка очевидна. Вы пытаетесь сравнить столбец INT с колонкой VARCHAR. Чтобы облегчить это, вы можете использовать или преобразовывать свои сравнения в varchar. Я сделал их всех, так как я не знаю, который вызывает ошибку ... но это столбец с PO321211 в нем :)

SELECT DISTINCT HEADER.PONUMBER, 
        SName, 
        CompanyName 
FROM HEADER INNER JOIN PDetails 
ON CAST(HEADER.PONUMBER AS VARCHAR(128)) = CAST(PDetails.PoNumber AS VARCHAR(128)) 
INNER JOIN FAN_P ON CAST(PDetails.PurchaseOrderID AS VARCHAR(128)) = CAST(FAN_P.PurchaseOrderID AS VARCHAR(128)) 

https://msdn.microsoft.com/en-us/library/ms187928.aspx

0

Проверить тип данных

HEADER.PONUMBER 
Details.PoNumber 

и

PDetails.PurchaseOrderID 
FAN_P.PurchaseOrderID 

Как это

SELECT DISTINCT HEADER.PONUMBER,SName,CompanyName 
      FROM HEADER 
    INNER JOIN PDetails 
      ON HEADER.PONUMBER = concat(PDetails.PoNumber, '') 
    INNER JOIN FAN_P 
      ON PDetails.PurchaseOrderID = FAN_P.PurchaseOrderID 

Или

SELECT DISTINCT HEADER.PONUMBER, SName, CompanyName 
      FROM HEADER 
    INNER JOIN PDetails 
      ON HEADER.PONUMBER = concat('PO',PDetails.PoNumber) 
    INNER JOIN FAN_P 
      ON PDetails.PurchaseOrderID = FAN_P.PurchaseOrderID 
+0

Привет христианин, HEADER.PONUMBER является VARCHAR2 AND DETAILS.PONUMBER - INT. – Shivang

+0

Попробуйте использовать HEADER.PONUMBER = concat (PDetails.PoNumber, '') в соединении – Christian

+0

Не могли бы вы подробно остановиться на нем? Благодаря – Shivang

Смежные вопросы