0

我有一个表“payments”和“payments1”。两个表都有一个连接。

Payments:
-----------
id  type  amount values
1    A     10     x
2    B     20     y
2    A     30     z

我正在尝试按 id 和类型分组。这样我就可以得到结果

id   type  total_amount type1 total_amount(sum)
-----------------------------------------------
1     A      10                             
2     A      20           B       30      

我试过以下查询

select 
case when r.type = 'A' then @payment+sum(r.amount) end  as total_amount,
case when r.type = 'B' then @refund+sum(r.amount) end as total_amount(sum)
from payments r

但在 CASE 中,它只针对一种类型执行?

4

2 回答 2

0

这个问题有点不清楚,但我假设你正在寻找 group by 声明。

select 
case when r.type = 'A' then @payment+sum(r.amount) end  as total_amount,
case when r.type = 'B' then @refund+sum(r.amount) end as total_amount(sum)
FROM payments r
GROUP BY r.type

对于表中的每个不同的 r.type 值,在 select 语句中都会有带有聚合日期的结果行。

还有一个不同的建议:

select 
(case r.type when 'A' then @payment else @refund end)+sum(r.amount) as total_amount
FROM payments r
GROUP BY r.type
于 2013-03-15T06:20:09.423 回答
0

如果类型是固定的,认为您需要这样的查询:

SELECT
  id,
  'A' as type,
  SUM(CASE WHEN type='A' THEN amount END) sum_typeA,
  'B' as type1,
  SUM(CASE WHEN type='B' THEN amount END) sum_typeB
FROM
  Payments
GROUP BY
  id

在此处查看小提琴。

于 2013-03-15T07:31:07.923 回答