应用过滤器后的最小日期

时间:2017-03-03 13:31:20

标签: sql sql-server

我有一张表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

1 个答案:

答案 0 :(得分:1)

我认为你需要条件聚合:

ID    A         B
1   111111     XXX
2   111111     YYY
3   222222     XXX
4   333333     ZZZ
5   333333     ZZZ