表a有两列bpm_no和total_amount。我试图总结每个bpm_no的total_amount,其中bpm_no可以重复,而total_amount列可能对于不同的行是不同的。我正在使用两种方法,如下所示:
select
a.bpm_no,
sum(a.total_amount)
from table a
group by a.bpm_no, a.total_amount
另一种方法我使用如下方法分区:
select
a.bpm_no,
sum(a.total_amount) over (partition by a.bpm_no)
from table a
group by a.bpm_no,a.total_amount
然而,我得到了不同的结果,使用第一种方法,它丢弃了一些值。使用第二种方法时,它会按预期显示每条记录。请解释哪一个是正确的,并说明这两种方法的不同之处。
答案 0 :(得分:1)
将第一个查询与 GROUP BY 一起使用应符合您的要求
public string method1(int id)
{
var getAllStudents = rep.Students.Where(e => e.StudentId == id).ToList();
foreach (var item in getAllStudents)
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
public string method2(int id)
{
var getAllTeachers = rep.Teachers.Where(e => e.TeacherId == id).ToList();
foreach (var item in getAllTeachers)
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
public string method3(int id)
{
var getAllClasses = rep.Classes.Where(e => e.ClassId == id).ToList();
foreach (var item in getAllClasses)
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
检查this SQLFiddle以供参考
答案 1 :(得分:0)
试试这个:
SELECT
a.bpm_no,
SUM(a.total_amount)
FROM
table a
GROUP BY
a.bpm_no
由于您未使用group by
,因此会添加所有值
**** **** DEMO
答案 2 :(得分:-1)
在第一个查询中,您应该按照以下条款编辑分组。
select
a.bpm_no,
sum(a.total_amount)
from table a
group by a.bpm_no
在第二个案例结果将会跟随。
select
a.bpm_no,
sum(a.total_amount) over (partition by a.bpm_no)
from table a
group by a.bpm_no
在所有查询列中使用聚合不在分组条款中使用。