如果status
列中的某个值出现,我希望过滤掉数据库中的行(PostgreSQL)。如果唯一amount
只有reference
等于status
,则可以将1
列相加。如果该问题的状态为SELECT
或任何其他reference
,则该查询不应2
status
。 status
指的是交易状态。
当前数据表:
reference | amount | status
1 100 1
2 120 1
2 -120 2
3 200 1
3 -200 2
4 450 1
结果:
amount | status
550 1
我已经简化了数据示例,但我认为它可以很好地了解我正在寻找的内容。
我仅选择仅具有状态references
的{{1}}时未成功。
我尝试使用1
子句和其他方法进行子查询但没有成功。
由于
答案 0 :(得分:2)
这是使用not exists
对状态为1的所有行求和的方法,并且不存在具有相同引用和非1状态的其他行。
select sum(amount) from mytable t1
where status = 1
and not exists (
select 1 from mytable t2
where t2.reference = t1.reference
and t2.status <> 1
)
答案 1 :(得分:1)
SELECT SUM(amount)
FROM table
WHERE reference NOT IN (
SELECT reference
FROM table
WHERE status<>1
)
子查询选择必须排除的所有reference
,然后主查询对除了它们之外的所有内容求和
答案 2 :(得分:1)
select sum (amount) as amount
from (
select sum(amount) as amount
from t
group by reference
having not bool_or(status <> 1)
) s;
amount
--------
550
答案 3 :(得分:0)
您可以使用$('.see-details').on('click', function(){
var id = $(this).data('id');
$('.modal-body').load('getContent.php?id=' + id, function(){
$('#myModal').modal({show:true});
});
});
来计算每组不同于1的状态:
windowed functions
<强> Rextester Demo 强>