22,209
社区成员
发帖
与我相关
我的任务
分享
USE ProductWarehouseSecurity
GO
-->生成表t1
if object_id('t1') is not null
drop table t1
Go
Create table t1([人员编号] smallint,[时间] datetime)
Insert into t1
Select 1,'2013-01-01'
Union all Select 1,'2013-01-02'
Union all Select 2,'2013-01-01'
Union all Select 2,'2013-01-02'
Union all Select 2,'2013-01-03'
Union all Select 2,'2013-01-04'
Union all Select 3,'2013-01-01'
Union all Select 3,'2013-01-02'
Union all Select 3,'2013-01-03'
Union all Select 4,'2013-01-01'
Union all Select 4,'2013-01-02'
-->生成表t2
if object_id('t2') is not null
drop table t2
Go
Create table t2([人员编号] smallint,[人员id] nvarchar(3),[姓名] nvarchar(1))
Insert into t2
Select 1,N'001',N'y'
Union all Select 2,N'002',N'n'
Union all Select 3,N'003',N'b'
Union all Select 4,N'005',N'v'
Union all Select 5,N'006',N'c'
Union all Select 6,N'007',N'x'
Union all Select 7,N'008',N'z'
SELECT
t2.人员id
,t1.时间
,(SELECT COUNT(1) FROM t1 AS x WHERE x.人员编号=t1.人员编号) AS id出现次数
from t1,t2
WHERE t1.人员编号=t2.人员编号
GROUP BY t2.人员id,t1.时间,t1.人员编号
/*
人员id 时间 id出现次数
---- ----------------------- -----------
001 2013-01-01 00:00:00.000 2
001 2013-01-02 00:00:00.000 2
002 2013-01-01 00:00:00.000 4
002 2013-01-02 00:00:00.000 4
002 2013-01-03 00:00:00.000 4
002 2013-01-04 00:00:00.000 4
003 2013-01-01 00:00:00.000 3
003 2013-01-02 00:00:00.000 3
003 2013-01-03 00:00:00.000 3
005 2013-01-01 00:00:00.000 2
005 2013-01-02 00:00:00.000 2
*/
select b.人员id,a.时间,count(a.人员编号)
from 表1 a,表2 b
where a.人员编号=b.人员编号
group by b.人员id,a.时间