+ -
当前位置:首页 → 问答吧 → 求个SQL的写法

求个SQL的写法

时间:2011-12-12

来源:互联网

简单表结构如下:table1
cardno inputdate 
001 2011-01-01
001 2011-04-10
001 2011-07-11
002 2011-02-02
002 2011-03-03
002 2011-05-03

结果返回为001
请问如何查询出inputdate 间隔大于90天的cardno 的数量
请热心高手帮忙!感谢!

作者: tsw13   发布时间: 2011-12-12

SQL code
select cardno from tb a
 where exists(select 1 from tb 
            where cardno=a.cardno abs(datediff(day,inputdate,a.inputdate))>90)

作者: ssp2009   发布时间: 2011-12-12

SQL code
use Tempdb
go
--> --> 
 
if not object_id(N'Tempdb..#T1') is null
    drop table #T1
Go
Create table #T1([cardno] nvarchar(3),[inputdate] Datetime)
Insert #T1
select N'001','2011-01-01' union all
select N'001','2011-04-10' union all
select N'001','2011-07-11' union all
select N'002','2011-02-02' union all
select N'002','2011-03-03' union all
select N'002','2011-05-03'
Go
Select DISTINCT a.[cardno]
from #T1 AS a
    INNER JOIN #T1 AS b ON a.cardno=b.cardno AND a.inputdate<b.inputdate
    AND b.inputdate=(SELECT MIN(inputdate) FROM #T1 WHERE a.inputdate<inputdate AND cardno=a.cardno)
WHERE DATEdiff(dd,a.inputdate,b.inputdate)>=90
/*
001*/

作者: roy_88   发布时间: 2011-12-12