求一SQL语句!!!!谢谢!!!!!!~~~~~~~ ( 积分: 30 )

  • 主题发起人 主题发起人 take2001
  • 开始时间 开始时间
T

take2001

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表里有记录:姓名,性别,出生日期
男的是到达60岁退休,女的是50岁,日期是截止至今天,怎么把退休的人员用一句Sql语句查出来?
 
...领分喽。。。
select * from table
where (性别='男' and datediff(year,出生日期,getdate())>=60)
or (性别='女' and datediff(year,出生日期,getdate())>=50)
order by 性别
 
日期是截止至今天!
select * from employe where
(sex='女' and (select datediff(month,birday,getdate())/12)>=50)
or(sex='男' and (select datediff(month,birday,getdate())/12)>=60)
上面的这句也只截止到月这样速度好慢,优化一下!!
 
楼上正解
 
仁兄,难道你们单位有千万人?
 
员工有13万啊!!妈 的!不好搞!
 
select 姓名,性别,出生日期 from 表
where 性别='男' and 出生日期 <= getdate() - cast( '1960-01-01' as datetime)
union all
select 姓名,性别,出生日期 from 表
where 性别='女' and 出生日期 <= getdate() - cast( '1950-01-01' as datetime)
这样比较好
 
是在同一张表!
 
select * from table
where (性别='男' and datediff(year,出生日期,getdate())>=60)
or (性别='女' and datediff(year,出生日期,getdate())>=50)
group by 性别
嫌慢的话 在“出生日期” 加索引
还有 如果数据量大的话 没必要 全部查处来的 就算你全查出来 也没人看那么多 加限制 比如 出生日期 从多久到多久的人 或者 按部门
 
这就是要给人看的啊!人是多!可是到达退休年龄的人并不多!
 
Select *
From
(Select * ,(Case When Sex='男' And DateDiff(Year,Birthday,GetDate())>=60 And Day(Birthday) =Day(GetDate()) Then '退休'
When Sex='女' And DateDiff(Year,Birthday,GetDate())>=50 And Day(Birthday) =Day(GetDate()) Then '退休'
Else '在職'
End) As Status
From Table
) T
Where Status='退休'
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
446
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部