有人可以帮助我。
我正在解释下面的例子 -
不,不完全是。我有一个表格,其中收集的数据是以客户收取的形式或收入以及客户付款。因此,假设收取的收入是3次,即2016年12月18日,2016年12月19日和2016年12月20日每次收费5000,客户付款是在2016年12月19日,金额为7000.00,然后是20 -12-2016,金额2000.00。此表中的条目插入为 -
TableName - Temp1
CustidId Amount pdate amount2 1 5000.00 18-12-2016 0.00 1 5000.00 19-12-2016 0.00 1 0.00 19-12-2016 7000.00 1 5000.00 20-12-2016 0.00 1 0.00 20-12-2016 2000.00
我需要以下面的格式输出这个表 -
Custid InDate Outdate TotalRev PaymentDate PaymentAmount 1 18-12-2016 20-12-2016 15000.00 19-12-2016 7000.00 1 18-12-2016 20-12-2016 20-12-2016 2000.00
此数据适用于1位客户,同样可以有多个客户,因此基于custid,必须显示收入和收款的数据。上面示例中的第二行可以将In Date和out date作为空白,但第二行中的TotalRev列必须为空或零。
请帮助我。
答案 0 :(得分:0)
SELECT
Id
, pdate
, SUM(amount2) AS amount2
, SUM(Amount) AS Amount
FROM
Temp1
GROUP BY
Id, pdate;
答案 1 :(得分:0)
您可以像这样查询...
SELECT ID, Pdate, max(Amount) as Amount, max(amount2) as Amount2)
from temp1 group by Id, Pdate
答案 2 :(得分:0)
您可以使用group by clause汇总记录。
该组应包含列的列表,您希望从中获得所有唯一组合。
您可以将群组与一个或多个aggregated functions合并,例如SUM,MIN和MAX。将列传递给这些函数将返回(例如)group by子句返回的每个给定组合的该列的总和。
-- Total amount and amount2 for each combination of Id and PDate .
SELECT
t1.id,
SUM(t1.amount) AS amount,
t2.pdate,
SUM(t2.amount2) AS amount2
FROM
temp1 t1
join temp1 t2 on t1.id = t2.id
and t2.amount2 >0 where t1.amount1 >0
GROUP BY
t1.id,
t2.pdate
;
答案 3 :(得分:-1)
据我了解,每pdate
列需要一笔金额,对吗?
如果是这样,您可以使用此查询:
select t1.id, SUM(t1.amount),t1.pdate, SUM(t1.amount2) from temp1 t1
group by t1.id, t1.pdate