-2
SELECT LIFNR,
 SUM(CASE WHEN  UPPER([WAERS])='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR)* (-1),2)
               WHEN UPPER(WAERS)='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR),2) 
               ELSE ROUND(CONVERT(numeric(10,2),DMBTR),2)
               END)
AS 'AMOUNT'
FROM tbl_BSAK
GROUP BY LIFNR;

皆さんこんにちは。

コードを書いたところ、「データ型 varchar を数値に変換中にエラーが発生しました」というエラー メッセージが表示され続けます。簡単な修正だと思いますが、トラブルシューティングに多くの時間を費やしました...

助けてください!!!!ありがとうございます!!!

4

1 に答える 1

4

構文に基づいて、これは SQL Server であると想定しています。

問題のある値を見つけたい場合は、次のようにします。

select *
FROM tbl_BSAK
where isnumeric(DMBTR) = 0 and DMBTR is not null;

問題を解決するには、次のようにします。

SELECT LIFNR,
 SUM(CASE WHEN isnumeric(DMBTR) = 1and UPPER([WAERS])='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR)* (-1),2)
               WHEN isnumeric(DMBTR) = 1 and UPPER(WAERS)='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR),2) 
               when isnumeric(DMBTR) = 1 then ROUND(CONVERT(numeric(10,2),DMBTR),2)
               END)
AS 'AMOUNT'
FROM tbl_BSAK
GROUP BY LIFNR;
于 2013-05-30T21:08:33.930 に答える