私は、SQLに精通していません。私は、次のケースを使用して、「ベンダー名」と「ベンダー番号」をレポートに含めることを試みています。ネストされたケースエラーLEFTまたはSUBSTRING関数に無効な長さパラメータが渡されました
ベンダー番号
CASE WHEN [GLPOST].[SRCELEDGER] = 'AP'
THEN
(SELECT LEFT([GLJED].[TRANSREF],
CHARINDEX('-',[GLJED].[TRANSREF])-1)
FROM [GLJED] WHERE [GLJED].[TRANSNBR] = '0000000020'
AND [GLPOST].[BATCHNBR] = [GLJED].[BATCHNBR]
AND [GLPOST].[ENTRYNBR] = [GLJED].[JOURNALID]
)
ELSE '' END
ベンダー名
CASE WHEN [GLPOST].[SRCELEDGER] = 'AP'
THEN
(SELECT [APVEN].[VENDNAME]
FROM [APVEN]
WHERE [APVEN].[VENDORID] = (SELECT LEFT([GLJED].[TRANSREF],
CHARINDEX('-',[GLJED].[TRANSREF])-1)
FROM [GLJED]
WHERE [GLJED].[TRANSNBR] = '0000000020'
AND [GLPOST].[BATCHNBR] = [GLJED].[BATCHNBR]
AND [GLPOST].[ENTRYNBR] = [GLJED].[JOURNALID])
)
ELSE '' END
問題がある
、私は取得していますエラー
"LEFTまたはSUBSTRING関数に渡された無効な長さのパラメータ。"
[GLJED]。[TRANSREF]にトランザクションに「 - 」がないためです。
私はこれを回避するさまざまな方法を試してみましたが、何か間違っています。 "-1"を削除するとクエリが実行されますが、探しているデータが表示されません。ベンダーの名前と番号を見つけるには、 " - "の左側のデータが必要です。
CHARINDEX( ' - '、[GLJED]。[TRANSREF])= 0の場合、別のケースをselect文の中に入れてみましたが、間違った場所に置く必要があります。
穏やかに、私は探しています!
おそらくCHARINDEX( ' - '、[GLJED][TRANSREF]) - [GLJED]。[TRANSREF]に - がないときは-1です。 – Matt
私はそれが欠落していることがわかりました。 " - "、そして基本的にエラーの原因となっている "0 - 1"と言っています。私はちょうどまだそれを修正する方法を見つけていない – user1486004