私は2つの主要な問題に直面しています!nvarchar値 'ABC113973'をデータ型intに変換するときに変換に失敗しました
問題1:
は、私は2つのテーブルを持っており、SQLでUNIONを使用して、特定のGridViewに必要なデータを表示したいです。表2には列{[Purchase_Date]列が含まれています。表2には列[{Date_Date] datetime、[Head] nvarchar(50)、[Details] nvarchar(360)、[ExpId] int、[Amount] decimal(18,2)}、 、 [VendorName] nvarchar(50)、[備考] nvarchar(50)、[Bill_No] nvarchar(50)、[AmountPaid]小数点(18,2)}
私のストアドプロシージャは次のとおりです。
DECLARE @Ledger TABLE
(
DATE DATETIME,
DESCRIPTION NVARCHAR(350),
REF_NO NVARCHAR (50),
AMOUNT INT
)
INSERT INTO @Ledger
SELECT
[Date], [Head] + ' - ' + [Details], [ExpId], [Amount]
FROM
[dbo].[Table1]
UNION
SELECT
[Purchase_Date], 'PURCHASE' + ' ' + [VendorName] + ' ' + [Remarks], [Bill_No], [AmountPaid]
FROM
[dbo].[Table2]
SELECT * FROM @Ledger
クエリを実行したとき、私はデータ型intにnvarchar型の値が「ABC113973」を変換するときにエラー
変換が失敗し得ます。
なぜ私はTable1なしで実行しようとすると、このエラーをスローするのはうまくいるのだろうか。データ型がint
の列ExpId
が原因ですか?はいの場合はどうすれば対処できますか?
問題2:私はそれが数値
にvarchar型に変換するときの変換が失敗し、エラーをスロー進数字で結果を表示したいと私は
decimal(18,0)
にAmount
データ型を変更するには、上記の@Ledger
表で
並べ替え:両方の実際の表の金額列のデータ型はdecimal(18,2)
です。
誰も私にこの問題の解決策とその理由を教えてもらえますか?おかげ
表1の列ExpIdのデータ型は –
です。編集した質問を参照してください。データ型はExpIdのINTです。 – Omer
これがエラーの原因です。共用体の列は同じデータ型でなければなりません.seebelow Answer –