0

NEW DocNumber ごとに列 (Counts) +1 をインクリメントする必要があります。したがって、DocNumber が 3 つの列で同じ場合、カウンターは 1、2、3 などになります。以下はコードです。同じまたは異なるdocnumberに基づいていないだけで、テーブル全体を更新するところまで来ました。誰かがここでロジックを手伝ってくれますか?

基本的に、新しいTempDocNumberにヒットしたときにカウンターを再起動したい

DECLARE @DocTable Table (DetailID FLOAT, TempDocNumber FLOAT, Counts INT)
INSERT INTO @DocTable (DetailID, TempDocNumber, Counts)
SELECT DetailID, DocumentNumber, 0 FROM ChargebackDetailTempTable


declare @Counter int
Set @Counter = 0
Update @Doctable
SET @Counter = counts = @Counter + 1

-- start counter over when new tempdocnumber
4

1 に答える 1

3

次のように挿入を作成できます。

DECLARE @DocTable Table (DetailID FLOAT, TempDocNumber FLOAT, Counts INT)
INSERT INTO @DocTable (DetailID, TempDocNumber, Counts)
SELECT  DetailID, 
        DocumentNumber TempDocNumber, 
        ROW_NUMBER() OVER(PARTITION BY DocumentNumber ORDER BY DetailId) Counts
FROM ChargebackDetailTempTable

必要ありませんUPDATE

SQL Server 2000 の場合

DetailID が ID 列であると仮定すると、次のことを試すことができます (繰り返しますが、UPDATE必要ありません)。

DECLARE @DocTable Table (DetailID FLOAT, TempDocNumber FLOAT, Counts INT)
INSERT INTO @DocTable (DetailID, TempDocNumber, Counts)
SELECT  DetailID, 
        TempDocNumber,
        Counts = (  SELECT COUNT(T1.DetailID) + 1
                    FROM ChargebackDetailTempTable T1
                    WHERE T1.DetailID < T.DetailID and T1.TempDocNumber = T.TempDocNumber)
FROM ChargebackDetailTempTable T
于 2012-11-14T19:57:17.120 に答える