34,593
社区成员
发帖
与我相关
我的任务
分享
外销发票号 核销单号 报关金额 收汇日 收汇金额 汇率 结汇
126HFGY10001 715890166 17228.16 2010-01-22 10879.38 6.8132 74123.39
2007-02-22 6323 6.8258 43159.53
2010-04-02 4450.4 6.8121 30316.57
select
外销发票号=case when b.外销发票号 is null then a.外销发票号 else '' end,
核销单号=case when b.核销单号 is null then a.核销单号 else '' end,
报关金额=case when b.报关金额 is null then a.报关金额 else 0 end,
a.收汇日,a.收汇金额,a.汇率,a. 结汇
from shoukuan a left join shoukuan b on a.外销发票号=b.外销发票号
and a.核销单号=b.核销单号 and a.报关金额=b.报关金额 and a.收汇金额>b.收汇金额
group by a.外销发票号,b.外销发票号,a.核销单号,b.核销单号,a.报关金额,b.报关金额,a.收汇日,a.收汇金额,a.汇率,a. 结汇
create table baoguan(外销发票号 varchar(20),核销单号 varchar(20),报关金额 decimal(18,2))
insert into baoguan values('126HFGY10001', '715890166', 17228.16)
create table shoukuan(外销发票号 varchar(20),收汇日 datetime,收汇金额 decimal(18,2),汇率 decimal(18,4),结汇 decimal(18,2))
insert into shoukuan values('126HFGY10001','2010-01-22', 10879.38 ,6.8132 ,74123.39)
insert into shoukuan values('126HFGY10001','2007-02-22', 6323 ,6.8258 ,43159.53)
insert into shoukuan values('126HFGY10001','2010-04-02', 4450.4 ,6.8121 ,30316.57)
go
select case when 收汇日 = (select top 1 收汇日 from shoukuan where 外销发票号 = m.外销发票号 order by 收汇日) then t.外销发票号 else '' end 外销发票号,
case when 收汇日 = (select top 1 收汇日 from shoukuan where 外销发票号 = m.外销发票号 order by 收汇日) then t.核销单号 else '' end 核销单号,
case when 收汇日 = (select top 1 收汇日 from shoukuan where 外销发票号 = m.外销发票号 order by 收汇日) then cast(t.报关金额 as varchar) else '' end 报关金额,
收汇日,收汇金额,汇率,结汇
from baoguan t , shoukuan m
where t.外销发票号 = m.外销发票号
order by m.收汇日
drop table baoguan , shoukuan
/*
外销发票号 核销单号 报关金额 收汇日 收汇金额 汇率 结汇
-------------------- -------------------- ------------------------------ ------------------------------------------------------ -------------------- -------------------- --------------------
126HFGY10001 715890166 17228.16 2007-02-22 00:00:00.000 6323.00 6.8258 43159.53
2010-01-22 00:00:00.000 10879.38 6.8132 74123.39
2010-04-02 00:00:00.000 4450.40 6.8121 30316.57
(所影响的行数为 3 行)
*/
select case when 收汇日 = (select min(收汇日) from baoguan where 外销发票号 = t.外销发票号) then 外销发票号 else '' end 外销发票号,
case when 收汇日 = (select min(收汇日) from baoguan where 外销发票号 = t.外销发票号) then 核销单号 else '' end 核销单号,
case when 收汇日 = (select min(收汇日) from baoguan where 外销发票号 = t.外销发票号) then cast(报关金额 as varchar) else '' end 报关金额,
收汇日,收汇金额,汇率,结汇
from baoguan t