2009-12-11 2 views
0

나는 pkey와 함께 테이블에 숫자 필드 (숫자)를 가지고 있습니다.쿼리 출력에 행 번호가 없습니다.

select * from mytable order by num 

이제 어떻게 pkey가있는 특정 행의 쿼리 출력에서 ​​행을 가져올 수 있습니까? 난 당신이 모든 행의 수는 바로, 반환 싶어 질문을 이해

나는 SQL 2000

답변

2

반환되는 각 레코드의 행 번호를 원하는 것처럼 들립니다.

SQL 2000에서이 작업을 수행 할 수 있습니다 : NUM을지지

SELECT (SELECT COUNT(*) FROM MyTable t2 WHERE t2.num <= t.num) AS RowNo, * 
FROM MyTable t 
ORDER BY num 

가 유일하다. 그렇지 않으면 PK 필드를 사용하고 주문해야합니다.

또는 임시 테이블 (또는 테이블 VAR) 사용 : SQL 2005 년

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 

을하는 ROW_NUMBER()가있다 당신이 인생을 더 쉽게 만드는 사용할 수있는 기능. 에이다가 지적 하듯이

+0

첫 번째 솔은 1 필드 만있는 경우 작동합니다. 둘 이상의 필드는 그렇지 않습니다. ADO.NET의 임시 테이블을 어떻게 사용할 수 있습니까? – Sharique

+0

개인적으로 저장 프로 시저에 쿼리를 래핑 한 다음 호출하면됩니다. 있는 그대로 쿼리를 보낼 수 있습니다 (CommandType = CommandType.Text). – AdaTheDev

0

을 사용하고 있습니다? 사용하는 경우 @@rowcount

+1

+1 당신이 질문 – NDM

+0

롤을 이해하기 때문에! 그래, 나는 과거에 이상하게 말한 질문으로 많은 연습을했습니다 :) –

+0

쿼리 결과에서 특정 행 (모든 행이 아닌)의 일련 번호를 원합니다. – Sharique

0

,이 작업은 SQL Server 2005에서 훨씬 더 쉽게되었다 ....

SELECT whatever, RowNumber from (
    SELECT pk 
      , whatever 
      , ROW_NUMBER() OVER(ORDER BY num) AS 'RowNumber' 
    FROM mytable 
) 
WHERE pk = 23; 
+1

SQL 2000에서는 ROW_NUMBER() 함수를 사용할 수 없습니다. – Sharique