Sql 计算不受限制的行总数
目前它正在工作,但我希望xml包含不受限制的总行数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
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)