表名:zfxx
字段1:id int 自动增长
字段2:lxr varchar(20)
字段3:lxdh varchar(50)
字段4:qydz varchar(100)
字段5:fbsj varchar(100) 但是存的数据是:例如:2012-02-15 13:26如图:我现在想将我zfxx表中的 lxr,lxdh,qydz三个字段中的内容有两项相同,并且fbsj在两个月以内的数据检索出来大家有什么好的方法?
字段1:id int 自动增长
字段2:lxr varchar(20)
字段3:lxdh varchar(50)
字段4:qydz varchar(100)
字段5:fbsj varchar(100) 但是存的数据是:例如:2012-02-15 13:26如图:我现在想将我zfxx表中的 lxr,lxdh,qydz三个字段中的内容有两项相同,并且fbsj在两个月以内的数据检索出来大家有什么好的方法?
SELECT * FROM zfxx
WHERE ((lxr=lxdh AND lxdh<>qydz)
OR (lxr<>lxdh AND lxr=qydz)
OR (lxr<>qydz AND lxdh=qydz))
AND DATEDIFF(d,fbsj,GETDATE())<60
go
insert into zfxx select 'a','d','c',CONVERT(varchar(16),GETDATE(),120) union all
select 'aa','bb','cc','2012-03-01 13:20' union all
select 'a','b','c','2012-01-02 13:20' union all
select 'bb','bb','cc','2012-03-03 13:20' union all
select 'ss','bb','v','2012-02-01 13:20' union all
select 'aa','aa','cc','2012-03-01 13:20' union all
select 'gg','bb','cvc','2012-02-21 13:20' union all
select 'aa','bb','cc','2012-01-21 13:20' union all
select 'cc','gg','cc','2012-04-01 13:20'
go
select * from zfxx where fbsj between CONVERT(varchar(16),dateadd(month,-2,GETDATE()),120) and CONVERT(varchar(16),GETDATE(),120)and (lxr=lxdh or lxr=qydz or lxdh=qydz )
/*
id lxr lxdh qydz fbsj
4 bb bb cc 2012-03-03 13:20
6 aa aa cc 2012-03-01 13:20
9 cc gg cc 2012-04-01 13:20
*/
(a.LXR=b.LXR and a.LXDH=b.LXDH)
or (a.JBQK=b.JBQK and a.LXDH=b.LXDH)
or (a.JBQK=b.JBQK and a.LXR=b.LXR)
不是lxr=lxdh or lxr=qydz or lxdh=qydz
时间也不是和当前时间比。是两条相同的数据进行对比
你没理解我的意思。我将zfxx表as a和b,条件是这样的:
(a.LXR=b.LXR and a.LXDH=b.LXDH)
or (a.JBQK=b.JBQK and a.LXDH=b.LXDH)
or (a.JBQK=b.JBQK and a.LXR=b.LXR)
不是lxr=lxdh or lxr=qydz or lxdh=qydz
时间也不是和当前时间比。是两条相同的数据进行对比