收录日期:2020/05/26 03:50:26 时间:2016/06/04 04:02:00 标签:应用实例
人员基本信息表(A01)

Id   姓名    入职时间       人员类别       身份证号 ……
1    张三   2005-06-11      在职人员       *******  ……
2    李四   2005-06-28      在职人员       *******  ……
3    王五   2005-03-12      离职人员       *******  ……
4    赵六   2005-04-11      在职人员       *******  ……
5    马二   2005-06-28      离职人员 
离职人员表(A02)
Id    离职类型    离职时间
3       自离     2005-07-12
5       辞职     2005-07-15


如何显示出时间范围在“2005-06-16” and "2005-07-15" 的记录,表样如下
表3(A03)

Id  增(减) 
2    增员
3    减员
5    增员
5    减员


select
    a.I,a.[增(减)]
from
    (select Id,时间 = 入职时间,[增(减)]='增员' from A01
     union
     select Id,时间 = 离职时间,[增(减)]='减员' from A02) a
where
    a.时间 between '2005-06-16' and '2005-07-15'
order by
    a.时间
select
    a.I,a.[增(减)]
from
    (select Id,时间 = 入职时间,[增(减)]='增员' from A01
     union
     select Id,时间 = 离职时间,[增(减)]='减员' from A02) a
where
    a.时间 between '2005-06-16' and '2005-07-15'
order by
    a.Id
Select Id,[增(减)] from
(Select Id,'增员' As [增(减)] from A01,入职时间 As 时间 Where 入职时间 Between '2005-06-16' And '2005-07-15'
Union All
Select Id,'减员' As [增(减)] from A02,离职时间 As 时间 Where 离职时间 Between '2005-06-16' And '2005-07-15'
) A
Order By 时间
上面的语句错误了。

如果是按时间排。

--建立测试环境
Create Table A01(
Id Int,
姓名 Nvarchar(10),
入职时间 Varchar(10),
人员类别 Nvarchar(10),
身份证号 Varchar(10))

Create Table A02
(Id Int,
 离职类型 Nvarchar(10),
 离职时间 Varchar(10))

--插入数据
Insert A01 Values(1,    N'张三',   '2005-06-11',      N'在职人员',       '')
Insert A01 Values(2,    N'李四',   '2005-06-28',      N'在职人员',       '')
Insert A01 Values(3,    N'王五',   '2005-03-12',      N'离职人员',       '')
Insert A01 Values(4,    N'赵六',   '2005-04-11',      N'在职人员',       '')
Insert A01 Values(5,    N'马二',   '2005-06-28',      N'离职人员',  '')

Insert A02 Values(3,       '自离',     '2005-07-12')
Insert A02 Values(5,       '辞职',     '2005-07-15')
--测试
Select Id,[增(减)] from
(Select Id,N'增员' As [增(减)],入职时间 As 时间 from A01 Where 入职时间 Between '2005-06-16' And '2005-07-15'
Union All
 Select Id,N'减员' As [增(减)],离职时间 As 时间 from A02 Where 离职时间 Between '2005-06-16' And '2005-07-15'
) A
Order By 时间
--删除测试环境
Drop Table A01,A02
--结果
/*
Id [增(减)]
2 增员
5 增员
3 减员
5 减员
*/
如楼主所要的结果。
--建立测试环境
Create Table A01(
Id Int,
姓名 Nvarchar(10),
入职时间 Varchar(10),
人员类别 Nvarchar(10),
身份证号 Varchar(10))

Create Table A02
(Id Int,
 离职类型 Nvarchar(10),
 离职时间 Varchar(10))

--插入数据
Insert A01 Values(1,    N'张三',   '2005-06-11',      N'在职人员',       '')
Insert A01 Values(2,    N'李四',   '2005-06-28',      N'在职人员',       '')
Insert A01 Values(3,    N'王五',   '2005-03-12',      N'离职人员',       '')
Insert A01 Values(4,    N'赵六',   '2005-04-11',      N'在职人员',       '')
Insert A01 Values(5,    N'马二',   '2005-06-28',      N'离职人员',  '')

Insert A02 Values(3,       '自离',     '2005-07-12')
Insert A02 Values(5,       '辞职',     '2005-07-15')
--测试
Select Id,N'增员' As [增(减)] from A01 Where 入职时间 Between '2005-06-16' And '2005-07-15'
Union All
Select Id,N'减员' As [增(减)] from A02 Where 离职时间 Between '2005-06-16' And '2005-07-15'
Order By Id,[增(减)] Desc
--删除测试环境
Drop Table A01,A02
--结果
/*
Id [增(减)]
2 增员
3 减员
5 增员
5 减员
*/

可以这样
select
    a.I,a.[增(减)]
from
    (select Id,时间 = 入职时间,[增(减)]='增员' from A01 where 时间 between '2005-06-16' and '2005-07-15'
     union
     select Id,时间 = 离职时间,[增(减)]='减员' from A02 where 时间 between '2005-06-16' and '2005-07-15'
) a
order by
    a.Id
mark
回复人: paoluo(一天到晚游泳的鱼) ( ) 信誉:100 

的是正解
select
    a.Id,a.[增(减)]
from
    (select Id,时间 = 入职时间,[增(减)]='增员' from A01
     union
     select Id,时间 = 离职时间,[增(减)]='减员' from A02) a
where
    a.时间 between '2005-06-16' and '2005-07-15'
order by
    a.Id
谢谢高手提供解决方案,结帐

java问题 hge的资源问题 关于数据结构连通子图的若干问题 如何简单用js写cookies根据浏览次数来限制按钮是打开连接还是弹出浮层呢? 如果设置oracle11R2里的某个用户密码永久不过期? 数组是否可以跳过某个元素 简单问题:showMessage()无效 那位大侠告诉小弟这sql语句怎么写啊 谁能破解这软件 《红灯记》经典台词:我家的表叔,数也数不清。此表叔是有血缘关系的表叔吗 下拉列表做翻页 怎么做 ADO数据读取的写法返回DataTable如何改成泛型? 在安装ADT的时候老是出现一下问题怎么解决 java问题 大侠们帮帮我啊 Java解析CSV问题 如何使网页图片不缓存到本地IE文件夹中 请问VS对话框如何加载动态的gif文件? 关于专家分的问题 const wchar_t *p = maintextblock->Text->Data(),*p 是否需要释放,如何释放? ssp2009 恭喜恭喜O(∩_∩)O~ 【已处理】删除资源 android4.0 camera双摄像头 驱动 调试 ubuntu iOS真机调试异常错误,怎么回事? 哪位大虾能提供一下pos系统中网点与总店的数据传送解决方案? 为什么 需刷新整个页面,才能跳转 access窗体查询问题 C#语言怎么删除标签 散分 Langford pair优化 随机读取图片问题