2011-12-22 9 views
0
WITH FirstQuery AS (
    select i.id, o.[name] from Item i 
    LEFT OUTER JOIN sys.objects o on o.[name]='I' + cast(i.id as nvarchar(20)) 
    where o.name is not null 
) 
select PriceListItem.ProductExternalId, 
     FQ.Id, [PriceListItem].[ProductExternalDesc] 
from FirstQuery FQ 
    inner join [Product] on Product.ItemId = FQ.name 
         and Product.InstanceId = FQ.ID 
    inner join [PriceListItem] on Product.ID = PriceListItem.ProductId; 

をnvarchar型の値を変換することができますこれは、エラーが発生しました:は、どのように私はデータ型intへ

Conversion failed when converting the nvarchar value 'I451' to data type int.

+0

このエラーをコードで解決するにはどうすればよいですか?多分私はこの値を変換することができますか? – revolutionkpi

+0

int型フィールドに数字以外の値を入れることはできません。一番最初にクリーンアップする必要があるデータ整合性の問題があります。 – Robert

答えて

2

そう...あなたはProduct.ItemID (int) = FQ.name (varchar)に参加しようとしているように見えます。

なぜそれが機能すると思いましたか?

サンプルデータは、あなたが何をしようとしているか、どのように達成すべきかを理解するのに役立ちます。

+0

"なぜそれはうまくいくと思いましたか?"彼は新しいかもしれない? – ajdams

0

これらの2つの列にまだ参加していて、無効なintのときに一致させたくない場合は、逆にしてください。 Product.ItemIDをvarcharにキャスト:

inner join [Product] on cast(Product.ItemID as varchar) = FQ.name 
+0

CAST(Product.ItemID AS nvarchar(20))=) – ajdams

+0

私は今それをテストすることはできませんが、私はあなたが(20)を必要としないと信じています。 – Rocklan