我有一张表A,用于存储从客户收到的所有已发出的发票(ID 1)付款(ID 4)。有时客户分2-3次付款。我想查找发票和为发票收取的最后一笔付款之间的日期差异。我的数据看起来像这样
**a.cltid**|**A.Invnum**|A.Cash|A.Date | a.type| a.status
70 |112 |-200 |2012-03-01|4 |P
70 |112 |-500 |2012-03-12|4 |P
90 |124 |-550 |2012-01-20|4 |P
70 |112 |700 |2012-02-20|1 |p
55 |101 |50 |2012-01-15|1 |d
90 |124 |550 |2012-01-15|1 |P
我正在运行
Select *, Datediff(dd,T.date,P.date)
from (select a.cltid, a.invnumber,a.cash, min(a.date)date
from table.A as A
where a.status<>'d' and a.type=1
group by a.cltid, a.invnumber,a.cash)T
join
Select *
from (select a.cltid, a.invnumber,a.cash, min(a.date)date
from table.A as A
where a.status<>'d' and a.type=4
group by a.cltid, a.invnumber,a.cash)P
on
T.invnumb=P.invnumber and T.cltid=P.cltid
d =已删除 我怎样才能使它工作?所以它告诉我
70|112|-500|2012-03-12|4|P 70|112|700|2012-02-20|1|p|22
90|124|-550|2012-01-20|4|P 90|124|550|2012-01-15|1|P|5
答案 0 :(得分:1)
我认为你需要条件聚合:
ID A B
1 111111 XXX
2 111111 YYY
3 222222 XXX
4 333333 ZZZ
5 333333 ZZZ