0

多くの行を持つ一時テーブルがあります (#TümDATA)。句をINSERT使用して別の一時テーブル (#GrupTOT) に行を挿入しますGROUP BY。しかし、私はここで立ち往生しています。行がグループ化された後、行に連続番号を付ける必要があります。

ここに私のSQLがあります:

INSERT INTO #GrupTOT(AY, BLK, DRE, TOT) 
SELECT J.AY, J.BLK, J.DRE, SUM(J.BORÇ) 
FROM #TümDATA J 
GROUP BY J.AY, J.BLK, J.DRE
4

4 に答える 4

0

ROW_NUMBERに基づいて数値を取得するために使用できますORDER BYIDENTITYまたは、挿入時に数値を自動インクリメントする列を追加することもできます。

ROW_NUMBERアプローチ:

WITH CTE AS
(
    SELECT Col1, Col2, Col3, Count(*) as [COUNT]
    FROM dbo.Table1
    GROUP BY Col1, Col2, Col3
)
INSERT INTO dbo.Table2
    SELECT RowNum = ROW_NUMBER() OVER ( ORDER BY Col1, Col2, Col3, [COUNT] DESC ),
           Col1, Col2, Col3, [COUNT]
    FROM CTE
于 2013-09-19T12:52:23.943 に答える
0

SELECT INTO列を使用してみることができIDENTITYます。これにより、新しい一時テーブルが作成されます#GrupTOT

ここにフィドルの例があります。

SELECT SeqNo = identity(int,1,1), --Identity column
       AY = J.AY
       BLK = J.BLK, 
       DRE = J.DRE,
       TOT = SUM(J.BORÇ) 
INTO #GrupTOT
FROM #TümDATA J 
GROUP BY J.AY, J.BLK, J.DRE;

--SELECT * FROM #GrupTOT
于 2013-09-19T13:12:58.700 に答える
0

機能を使用できますROW_NUMBER()

例えば

WITH q AS (
    SELECT field_a
    FROM SomeTable
    GROUP BY field_a
)
SELECT ROW_NUMBER() OVER(ORDER BY field_a) AS row_num,
       field_a
FROM q
于 2013-09-19T12:54:48.363 に答える