4つのテーブルがあり、そこからselectクエリの結合を使用してデータを選択します...フェッチされるレコードごとのシリアル番号(行番号)が必要です。最初にフェッチされるレコードは1、次の2などになります。
オラクルでは、RowNumの同等のもの。
4つのテーブルがあり、そこからselectクエリの結合を使用してデータを選択します...フェッチされるレコードごとのシリアル番号(行番号)が必要です。最初にフェッチされるレコードは1、次の2などになります。
オラクルでは、RowNumの同等のもの。
Brettski による回答は ASP 風であり、多くの編集が必要です。
SELECT DCOUNT("YourField","YourTable","YourField <= '" & [counter] & "'")
AS RowNumber,
YourField as counter FROM YourTable;
上記は基本的な構文です。これは非常に遅く実行されることがわかります。私の典型的な解決策は、Autonumber フィールドを持つバケット テーブルです。それは不格好に思えますが、それは私にコントロールを与え、おそらくこの場合はスピードを可能にします.
以下の表で
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
この方法の問題は、結果セットに重複がある場合にカウントがオフになることです。
この記事では、クエリに行カウント列を追加する方法について詳しく説明しています。