2016-11-22 10 views
1

Как результат %ROWCOUNT, отображаемый в инструкции SQL. неОтобразить% ROWCOUNT значение в операторе select

Пример

Select top 10 * from myTable. 

Я хотел бы результаты, чтобы иметь rowCount для каждой строки, возвращаемой в наборе результатов

Ex

+----------+--------+---------+ 
|rowNumber |Column1 |Column2 | 
+----------+--------+---------+ 
|1   |A  |B  | 
|2   |C  |D  | 
+----------+--------+---------+ 

ответ

2

Есть нет какой-либо простой способ сделать это , Вы можете добавить процедуру Sql с этой функциональностью и использовать ее в своих операциях SQL. Например, класс:

Class Sample.Utils Extends %RegisteredObject 
{ 

ClassMethod RowNumber(Args...) As %Integer [ SqlProc, SqlName = "ROW_NUMBER" ] 
{ 
    quit $increment(%rownumber) 
} 

} 

, а затем, вы можете использовать его таким образом:

SELECT TOP 10 Sample.ROW_NUMBER(id) rowNumber, id,name,dob 
FROM sample.person 
ORDER BY ID desc 

Вы получите что-то вроде ниже

+-----------+-------+-------------------+-----------+ 
|rowNumber |ID  |Name    |DOB  | 
+-----------+-------+-------------------+-----------+ 
|1   |200 |Quigley,Neil I. |12/25/1999 | 
|2   |199 |Zevon,Imelda U. |04/22/1955 | 
|3   |198 |O'Brien,Frances I. |12/03/1944 | 
|4   |197 |Avery,Bart K.  |08/20/1933 | 
|5   |196 |Ingleman,Angelo F. |04/14/1958 | 
|6   |195 |Quilty,Frances O. |09/12/2012 | 
|7   |194 |Avery,Susan N.  |05/09/1935 | 
|8   |193 |Hanson,Violet L. |05/01/1973 | 
|9   |192 |Zemaitis,Andrew H. |03/07/1924 | 
|10   |191 |Presley,Liza N. |12/27/1978 | 
+-----------+-------+-------------------+-----------+ 
+0

Отличный ответ! Большое спасибо;) – bArraxas

0

Если вы готовы переписать ваш запрос, то вы можете использовать счетчик просмотров, чтобы делать то, что ищете. Вот ссылка на docs.

Короткий вариант - вы переместите свой запрос в подзапрос предложения FROM и используйте специальное поле% vid.

SELECT v.%vid AS Row_Counter, Name 
    FROM (SELECT TOP 10 Name FROM Sample.Person ORDER BY Name) v 

Row_Counter Name 
1   Adam,Thelma P. 
2   Adam,Usha J. 
3   Adams,Milhouse A. 
4   Allen,Xavier O. 
5   Avery,James R. 
6   Avery,Kyra G. 
7   Bach,Ted J. 
8   Bachman,Brian R. 
9   Basile,Angelo T. 
10   Basile,Chad L.