在select语句中显示%ROWCOUNT值

时间:2016-11-22 11:24:50

标签: intersystems-cache intersystems-cache-studio

如何在SQL语句中显示%ROWCOUNT的结果。

实施例

Select top 10 * from myTable.

我希望结果在结果集

中返回的每一行都有rowCount

实施例

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

2 个答案:

答案 0 :(得分:5)

没有任何简单的方法可以做到这一点。您可以使用此功能添加Sql Procedure并在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 |
+-----------+-------+-------------------+-----------+

答案 1 :(得分:1)

如果您愿意重写查询,那么您可以使用视图计数器来执行您要查找的内容。这是指向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.