0

4つのテーブルがあり、そこからselectクエリの結合を使用してデータを選択します...フェッチされるレコードごとのシリアル番号(行番号)が必要です。最初にフェッチされるレコードは1、次の2などになります。

オラクルでは、RowNumの同等のもの。

4

3 に答える 3

4

Brettski による回答は ASP 風であり、多くの編集が必要です。

SELECT DCOUNT("YourField","YourTable","YourField <= '" & [counter] & "'") 
  AS RowNumber,  
  YourField as counter FROM YourTable;  

上記は基本的な構文です。これは非常に遅く実行されることがわかります。私の典型的な解決策は、Autonumber フィールドを持つバケット テーブルです。それは不格好に思えますが、それは私にコントロールを与え、おそらくこの場合はスピードを可能にします.

于 2009-11-09T15:29:22.070 に答える
-1

以下の表で

SET NOCOUNT ON 

CREATE TABLE people 
( 
    firstName VARCHAR(32), 
    lastName VARCHAR(32) 
) 
GO 

INSERT people VALUES('Aaron', 'Bertrand') 
INSERT people VALUES('Andy', 'Roddick') 
INSERT people VALUES('Steve', 'Yzerman') 
INSERT people VALUES('Steve', 'Vai') 
INSERT people VALUES('Joe', 'Schmoe')

サブクエリを使用して、カウント行を作成できます。

SELECT 
    rank = COUNT(*), 
    a.firstName, 
    a.lastName 
FROM 
    people a  
    INNER JOIN people b 
    ON  
        a.lastname > b.lastname 
        OR 
        ( 
            a.lastName = b.lastName 
            AND 
            a.firstName >= b.firstName 
        ) 
GROUP BY 
    a.firstName, 
    a.lastName 
ORDER BY 
    rank

この方法の問題は、結果セットに重複がある場合にカウントがオフになることです。

この記事では、クエリに行カウント列を追加する方法について詳しく説明しています。

于 2009-11-09T14:40:56.973 に答える