pkey と一緒にテーブルに数値フィールド (num など) があります。
select * from mytable order by num
pkey を持っている特定の行のクエリ出力で行番号を取得する方法を教えてください。
私はSQL2000を使用しています。
pkey と一緒にテーブルに数値フィールド (num など) があります。
select * from mytable order by num
pkey を持っている特定の行のクエリ出力で行番号を取得する方法を教えてください。
私はSQL2000を使用しています。
返される各レコードの行番号が必要なようです。
SQL 2000 では、次のいずれかを実行できます。
SELECT (SELECT COUNT(*) FROM MyTable t2 WHERE t2.num <= t.num) AS RowNo, *
FROM MyTable t
ORDER BY num
num が一意であると仮定します。そうでない場合は、PK フィールドを使用して並べ替える必要があります。
または、一時テーブル (またはテーブル var) を使用します。
CREATE TABLE #Results
(
RowNo INTEGER IDENTITY(1,1),
MyField VARCHAR(10)
)
INSERT #Results
SELECT MyField
FROM MyTable
ORDER BY uum
SELECT * FROM #Results
DROP TABLE #Results
SQL 2005 には ROW_NUMBER() 関数があり、これを使用すると作業が大幅に楽になります。
あなたの質問を理解しているので、返されたすべての行の数を取得したいと思いますよね? その場合は@@rowcountを使用
Ada が指摘するように、このタスクは SQL Server 2005 で非常に簡単になりました....
SELECT whatever, RowNumber from (
SELECT pk
, whatever
, ROW_NUMBER() OVER(ORDER BY num) AS 'RowNumber'
FROM mytable
)
WHERE pk = 23;