2
SELECT  ITEMGROUPID ,
        ITEMID ,
        ITEMNAME ,
        ITEMTYPE ,
        COSTGROUPID ,
        SALESMODEL ,
        DIMENSION ,
        ( SELECT    DESCRIPTION
          FROM      DIMENSIONS
          WHERE     ( NUM = 0 )
                    AND ( DIMENSIONCODE = IT1.DIMENSION )
        ) AS Expr1
FROM    INVENTTABLE AS IT1
WHERE   ( DATAAREAID = 'm02' )
        AND ( ITEMGROUPID = 'FG' )
        AND ( ITEMID = '14901C' )

このクエリはエラーをスローします。int結果は、列から値 ( ) を取得してテーブルIT1.DIMENSIONを検索し、テーブル内の説明列からDimension値 ( ) を返すはずです。nvarcharDIMENSIONS

実行すると、次のエラーが発生します。

変換に失敗しました。NVARCHAR 値 'AG' をデータ型 INT に変換する場合。

ここでの目的は、上記の 2 つのテーブルINVENTTABLEとの間で左外部結合を使用しないようにすることDIMENSIONSです。

4

1 に答える 1

0

SQL Server では、これを次のように行います。

...DIMENSIONCODE = Convert(int, IT1.DIMENSION)...

ただし、IT1.Dimension 列の内容が実際には数値であるという大まかな推測になります。状況によっては、整数に変換できるものが含まれていない場合は、次のように記録する必要があります。

...DIMENSIONCODE = Convert(int, iif(isnumeric(IT1.DIMENSION) = 1, IT1.DIMENSION, "1"))...

IT1.DIMENSION が有効な数値でない場合に、式の結果に「1」を強制する場所。使用しているデータベースが特定されていないため、いくつかのバリエーションを使用する必要がある場合があります。

于 2013-06-12T21:33:17.097 に答える