2014-06-27 48 views
0

我使用此查询来获取:从tblcustomers 客户名称 transactionamount的总和从tbltransactions针对每个客户如何在mysql查询中获得想要的结果?

select a.customerid, sum(transactionamount) as transactionamount ,b.customername 
from tbltransactions a 
join tblcustomers b using (customerid) 
group by a.customerid 
order by b.customername 

的coloumn transactionamounttbltransactions包含了客户购买和负值客户支付正值。

如何在此查询中获得此表达式min(transactionamount)< 0对于每个客户

编辑:分钟(transactionamount)< 0给我的每一个客户迄今所支付的最高金额

+0

解释通过的话你的意图,你的尝试并不清楚你想要什么。 – zerkms

+0

'有MAX(transactionamount)<0' groupy由可能工作 – Rufinus

回答

1

为此,您可以使用条件汇总:

select a.customerid, sum(transactionamount) as transactionamount, b.customername, 
     min(case when transactionamount < 0 then transactionamount end) as BiggestPayment 
from tbltransactions a join 
    tblcustomers b 
    using (customerid) 
group by a.customerid 
order by b.customername; 

注意的最小值小于0实际上是最小值不是最大值。

编辑:

substring_index(group_concat((case when transactionamount < 0 then transactionamount end) 
           order by transactiondate desc 
          ), ',', 1) 
+0

完美的解决方案感谢后 – user3762808

+0

我们怎么能进一步修改此查询找到最新的transactionId其中transactionamount <0 ????在此先感谢 – user3762808

+0

哪里适合这一个在查询中...我是新来的sql :) – user3762808

0

你想这样的:

在这种情况下,我会使用substring_index()/group_concat()招找到最新的付款日期?

select a.customerid, sum(transactionamount) as transactionamount ,b.customername 
from tbltransactions a 
join tblcustomers b using (customerid) 
group by a.customerid 
having max(transactionamount) < 0 
order by b.customername 

仅向客户支付仅付款?

最好的问候, 内博伊沙

相关问题