レコードの行番号を調べるには?

以下の表の例で考えてみましょう。

ProductDetailNo    ProductDescription
      224                Apples
      225                Tomatoes
      226                Potatoes

以下のように、選択された行の行番号をリストアップするにはどうすればよいですか?

RowNo    ProductDetailNo          Product Description
  2         225                Tomatoes

私のクエリでrow_number()を使用すると、データベース内の論理行が何であれ、単一のレコードに対して常に1が返されるだけです。

ありがとう、Damien。

ソリューション

やってみる

WITH MyTable AS
(
    SELECT ProductDetailNo, ProductDescription,
    ROW_NUMBER() OVER ( ORDER BY ProductDetailNo ) AS 'RowNumber'
    FROM Product
) 
SELECT RowNumber, ProductDetailNo     
FROM MyTable 
WHERE ProductDetailNo = 225
解説 (7)

これはどうでしょう?

SELECT RowNo, ProductDetailNo, ProductDescription
FROM (SELECT ROW_NUMBER() as RowNo, ProductDetailNo, ProductDescription
      FROM TheTable) as t
WHERE ProductDetailNo = 225;
解説 (4)

例えば、結果が1つのタプルである場合、行番号は常に1です。

テーブル全体の行番号を取得するには、テーブルに自動インクリメントの RowNo 属性を追加する必要があります。

しかし、もしかしたらSQLはもっと良い解決策を持っているかもしれません。

解説 (1)