この試してください:あなたが削除することができます
SELECT ROW_NUMBER() OVER (ORDER BY ActualAmount DESC) rw ,
*
INTO #Negative
FROM your_table
WHERE ActualAmount < 0;
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1
)) rw ,
*
INTO #Positive
FROM your_table
WHERE ActualAmount > 0;
CREATE TABLE #FinalTable
(
Subledger NVARCHAR(50) NULL ,
ActualAmount INT NULL
);
DECLARE @NCounterMax INT= (SELECT COUNT(*)
FROM #Negative
);
DECLARE @PCounterMax INT= (SELECT COUNT(*)
FROM #Positive
) ,
@NC INT= 1 ,
@PC INT= 1 ,
@amount INT= 0 ,
@amount2 INT= 0 ,
@subledger NVARCHAR(50) ,
@countinue BIT = 1 ,
@SumAmount INT= 0;
WHILE (@PC <= @PCounterMax)
BEGIN
SELECT @amount = ActualAmount ,
@subledger = Subledger
FROM #Positive
WHERE rw = @PC;
INSERT INTO #FinalTable
VALUES (@subledger, @amount);
SET @SumAmount = @amount;
PRINT @amount;
WHILE (@NC <= @NCounterMax)
BEGIN
SELECT @amount2 = ActualAmount ,
@subledger = Subledger
FROM #Negative
WHERE rw = @NC;
INSERT INTO #FinalTable
VALUES (@subledger, @amount2);
SET @SumAmount = @SumAmount + @amount2;
IF (@SumAmount = 0)
BEGIN
SET @countinue = 0;
BREAK;
END;
SET @NC = @NC + 1;
END;
IF (@countinue = 0)
BREAK;
DELETE #FinalTable;
SET @PC = @PC + 1;
END;
SELECT *
FROM #FinalTable;
DROP TABLE #Negative;
DROP TABLE #Positive;
DROP TABLE #FinalTable;
を#FinalTable
あなたのテーブルのレコード。
結果セットから5行のうちの2行を削除するロジックが不明です。これらの行は、*合計*にどのように関連していますか?あなたの質問を編集してください。 –
あなたが望む結果でそれらの3つを合計すると、答えは0になります。それはすべて私が見たい-25775と48994ではありません – Jomari
あなたは私を失ってしまいました! – Strawberry