sql-server - T-SQL 查询未在输出中分组结果
问题描述
我在存储过程中嵌入了以下查询
select u.UserName, s.Name, count(i.id) as NumberAccounts, sum(i.total) as CCTotal
from invoice i
inner join visit v on v.id = i.id
inner join branch b on b.id = v.branchid
inner join practice p on p.id = b.practiceid
inner join visitscheme vs on vs.id = v.id
inner join [plan] pl on pl.id = vs.planid
inner join scheme s on s.id = pl.schemeid
inner join creditcontrol cc on cc.SchemeId = s.id
inner join [user] u on u.id = cc.userid
where p.APIKey = @pracId
and (u.id = @CCid OR @CCId = '999999')
and (s.id = @SchemeId or @SchemeId = 999999)
group by u.UserName, s.Name
order by u.username
当我运行它而不是按用户名和方案分组的结果时,我得到以下信息
UserName Name NumberAccounts CCTotal
chanel BANKMED 9954 11882514.19
ciske BANKMED 9954 11882514.19
Estee BANKMED 9954 11882514.19
Feroza BANKMED 9954 11882514.19
未应用分组,每个分组的值相同。有人知道我哪里出错了吗?
谢谢
解决方案
就这样写吧……
select u.UserName, s.Name, count(i.id) as NumberAccounts, sum(i.total) as CCTotal
from invoice i
inner join visit v on v.id = i.id
inner join branch b on b.id = v.branchid
inner join practice p on p.id = b.practiceid and p.APIKey = @pracId
inner join visitscheme vs on vs.id = v.id
inner join [plan] pl on pl.id = vs.planid
inner join scheme s on s.id = pl.schemeid and (s.id = @SchemeId or @SchemeId = 999999)
inner join creditcontrol cc on cc.SchemeId = s.id
inner join [user] u on u.id = cc.userid and (u.id = @CCid OR @CCId = '999999')
group by u.UserName, s.Name
order by u.username
假设您的连接是正确的
推荐阅读
- c++ - thread_guard 与 scoped_thread
- wpf - 为什么 ContentControl 中的 ListViewItems 只能在前几个像素上选择?
- apache-spark - 带有 Json 输出的 Spark 数据集以 Kryo 编码形式出现
- node.js - 如何将 Vue 客户端代理到在 docker 容器中运行的 Express 服务器
- rust - 预期的字符串类型,当我明确地将其设为字符串时找到类型 str
- jenkins - 运行jenkins cli时如何修复'java.io.IOException:HTTP全双工通道超时'?
- python-3.x - 将上传的文件传输到 AWS S3 存储桶后无法加载静态文件
- javascript - 如何对数组进行切片,以便留下从索引 1 到倒数第二个索引的所有元素?
- node.js - 在模式中存在出生日期时使用年龄最大值和年龄最小值过滤用户数据
- google-chrome - 是否还有其他人遇到 Syncfusion Pivot Grid 远程数据错误?