Sql 计算不受限制的行总数

Sql 计算不受限制的行总数,sql,stored-procedures,full-text-search,for-xml,Sql,Stored Procedures,Full Text Search,For Xml,目前它正在工作,但我希望xml包含不受限制的总行数 SET @query_result = (SELECT ID,Title FROM ( SELECT items.id AS "ID",items.title AS "Title" , ROW_NUMBER() OVER(ORDER BY date_added DESC) AS RowNum FROM [cars] JO

目前它正在工作,但我希望xml包含不受限制的总行数

SET @query_result = (SELECT ID,Title 
        FROM
        ( 
            SELECT items.id AS "ID",items.title AS "Title" ,
ROW_NUMBER() OVER(ORDER BY date_added DESC) AS RowNum
                FROM [cars] 
                JOIN [items] ON items.id=cars.item_id
                WHERE
                rejected = 0 


    )AS MyDerivedTable
        WHERE
        MyDerivedTable.RowNum BETWEEN (@page-1)*2+1 AND (@page*2) 
        FOR XML PATH('car'),ROOT('items')
)
这是回报

<items>
  <car>
    <ID>37</ID>
    <Title>Used 2004 Chevrolet Corvette Convertible</Title>
  </car>
</items>

37
使用2004雪佛兰Corvette敞篷车
我想要

<items>
      <car>
        <ID>37</ID>
        <Title>Used 2004 Chevrolet Corvette Convertible</Title>
        <Count>6</Count>
      </car>
    </items>

37
使用2004雪佛兰Corvette敞篷车
6.
而Count不是返回的行数,而是与查询匹配的行总数。或者,如果我的问题太难让任何人都无法理解,我正在寻找MSSQL替代方法来查找查找的_行();
这个问题@正试图回答同样的问题,但我想要的解决方案是MSSQL。

好的,我希望我现在了解您想要做什么。我相信您必须“扭转”您的选择,并使用CTE(公共表表达式)而不是子选择来实现这一点

试试这个:

DECLARE @queryResult VARCHAR(MAX)

;WITH MyDerivedTable AS
(
    SELECT 
       items.id,
       items.title,
       ROW_NUMBER() OVER(ORDER BY date_added DESC) AS RowNum
    FROM dbo.cars
    INNER JOIN dbo.items ON items.id = cars.item_id
    WHERE rejected = 0 
) 
SELECT
   @queryResult = 
   (SELECT
       ID, Title,
       (SELECT MAX(RowNum) FROM MyDerivedTable) AS 'Count'
    FROM
       MyDerivedTable
    WHERE
        RowNum BETWEEN (@page-1)*2+1 AND (@page*2) 
    FOR XML PATH('car'),ROOT('items')
   )

SELECT @queryResult

它应该为每个车辆条目输出您的
ID
标题
计数
(这是
行数
的最大值)。

如果表中有6项,这个查询返回了其中的2个,而我想要这个东西,但是作为一个XML元素,总行数为6。我试图说得很清楚。表是“连接”的。我只关心与“整个”查询匹配的行总数,而不关心返回的行数。@FreeAsInBeer不,它们不一样。总行数:6行;返回行:2.类似分页。如何将此结果存储到@query\u result nvarchar(max)