34,590
社区成员
发帖
与我相关
我的任务
分享
select a.客户姓名,b.省份,a.交款日期 第一次交款日期
from 表二 a,表一 b
where a.客户姓名=b.客户姓名
and not exists(select * from 表二 where 客户姓名=a.客户姓名 and 交款日期<a.交款日期)
create table 表一(客户姓名 varchar(10),省份 varchar(10))
insert into 表一 values('aa', '江苏')
insert into 表一 values('dd', '浙江')
insert into 表一 values('hh', '江西')
insert into 表一 values('ff', '广西')
insert into 表一 values('jj', '山东')
insert into 表一 values('tt', '湖北')
create table 表二(客户姓名 varchar(10),交款日期 datetime)
insert into 表二 values('aa', '2008-3-5 ')
insert into 表二 values('aa', '2008-3-13')
insert into 表二 values('ff', '2008-3-8')
insert into 表二 values('rr', '2008-4-5')
insert into 表二 values('tt', '2008-4-7')
insert into 表二 values('jj', '2008-2-4')
insert into 表二 values('jj', '2008-3-5')
insert into 表二 values('jj', '2008-6-7')
insert into 表二 values('ff', '2008-4-6')
insert into 表二 values('tt', '2008-5-6')
go
select m.客户姓名,m.省份,n.交款日期 from 表一 m,
(select 客户姓名,min(交款日期) 交款日期 from 表二 where convert(varchar(7),交款日期,120) = '2008-03' group by 客户姓名) n
where m.客户姓名 = n.客户姓名
drop table 表一,表二
/*
客户姓名 省份 交款日期
---------- ---------- ------------------------------------------------------
aa 江苏 2008-03-05 00:00:00.000
ff 广西 2008-03-08 00:00:00.000
jj 山东 2008-03-05 00:00:00.000
(所影响的行数为 3 行)
*/
--上面漏写表别名.
select m.客户姓名,m.省份,n.交款日期 from 表一 m
left join
(select 客户姓名,min(交款日期) 交款日期 from 表二 where convert(varchar(7),交款日期,120) = '2008-03' group by 客户姓名) n
on m.客户姓名 = n.客户姓名
select m.客户姓名,m.省份,n.交款日期 from 表一
left join
(select 客户姓名,min(交款日期) 交款日期 from 表二 where convert(varchar(7),交款日期,120) = '2008-03' group by 客户姓名) n
on m.客户姓名 = n.客户姓名
select a.客户姓名,b.省份,a.交款日期 第一次交款日期
from 表二 a,表一 b
where a.客户姓名=b.客户姓名
and not exists(select * from 表二 where 客户姓名=a.客户姓名 and 交款日期<a.交款日期)
select a.客户姓名,a.省份,第一次交款日期=min(交款日期)
from 表一 a
inner join 表二 b
on a.客户姓名=b.客户姓名
where datepart(month,b.交款日期)=3