Sql:从(选择...)中选择计数(*)

Mah*_*vcs 4 sql sql-server count subquery

我有一个带有分组的 sql select 命令,我想获取总行数。我该如何实现这一目标?

我的sql命令:

select p.UserName, p.FirstName + ' ' + p.LastName as [FullName]
 ,count(b.billid) as [Count], sum(b.PercentRials) as [Sum] from Bills b
inner join UserProfiles p on b.PayerUserName=p.UserName
 where b.Successful=1
 group by p.UserName, p.FirstName + ' ' + p.LastName
Run Code Online (Sandbox Code Playgroud)

我尝试过这些但没有运气:

select count(*) from (select ...)
Run Code Online (Sandbox Code Playgroud)

select count(select ...)
Run Code Online (Sandbox Code Playgroud)

编辑

这是我想要运行的完整 sql 语句:

select count(*) from (    select p.UserName, p.FirstName + ' ' + p.LastName as [FullName]
 ,count(b.billid) as [Count], sum(b.PercentRials) as [Sum] from Bills b
inner join UserProfiles p on b.PayerUserName=p.UserName
 where b.Successful=1
 group by p.UserName, p.FirstName + ' ' + p.LastName)
Run Code Online (Sandbox Code Playgroud)

我在最后一行收到此错误:

Incorrect syntax near ')'.
Run Code Online (Sandbox Code Playgroud)

M.A*_*Ali 8

SELECT COUNT(*)
FROM 
(
select p.UserName, p.FirstName + ' ' + p.LastName as [FullName]
 ,count(b.billid) as [Count], sum(b.PercentRials) as [Sum] from Bills b
inner join UserProfiles p on b.PayerUserName=p.UserName
 where b.Successful=1
 group by p.UserName, p.FirstName + ' ' + p.LastName   --<-- Removed the extra comma here
) A  --<-- Use an Alias here
Run Code Online (Sandbox Code Playgroud)

正如我从你所展示的尝试中所预期的那样,你缺少一个别名

select count(*) 
from (select ...) Q  --<-- This sub-query in From clause needs an Alias 
Run Code Online (Sandbox Code Playgroud)

编辑

如果您只需要知道此查询返回的行,并且无论如何都在代码中的某个位置执行此查询,您可以简单地使用@@ROWCOUNT函数。就像是....

SELECT ......     --<-- Your Query

SELECT @@ROWCOUNT    --<-- This will return the number of rows returned 
                       -- by the previous query 
Run Code Online (Sandbox Code Playgroud)