SQL Serverストアドプロシージャを使用して一時テーブルからレコードを挿入しようとしています。一時テーブルには、パーセンテージ列とPQ番号列があります。テーブル内には、同じPQ番号を持つ行が2つ以上存在することがあります。しかし挿入が起こるためには、同じPQ番号のパーセンテージの合計は100%でなければなりません。この状況ではwhere節を書くことができませんでした。一部の条件に基づくレコードの挿入
CREATE PROCEDURE [dbo].[Upsert_DebitSheet]
@filename VARCHAR(250)
AS
BEGIN
SET XACT_ABORT ON
RETRY: -- Label RETRY
BEGIN TRANSACTION
BEGIN TRY
SET NOCOUNT ON;
INSERT INTO [dbo].[DebitSheet]([Date], [RMMName], [Invoice],[PQNumber], [CAF],
[Percentage], [Amount], [FileName])
SELECT
*, @filename
FROM
(SELECT
[Date], [RMMName], [Invoice], [PQNumber], [CAF],
[Percentage], [Amount]
FROM
[dbo].[TempDebitSheet]
WHERE) result
SELECT @@ROWCOUNT
TRUNCATE TABLE [dbo].[TempDebitSheet]
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
ROLLBACK TRANSACTION
IF ERROR_NUMBER() = 1205 -- Deadlock Error Number
BEGIN
WAITFOR DELAY '00:00:00.05' -- Wait for 5 ms
GOTO RETRY -- Go to Label RETRY
END
END CATCH
SET ROWCOUNT 0;
END
はいくつかのサンプルデータと期待される結果を示します – TheGameiswar
@ TheGameiswarサンプルデータを追加しました –