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 时。

此处的目标是消除在上述两个表INVENTTABLEDIMENSIONS.

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 回答