27,579
社区成员
发帖
与我相关
我的任务
分享
CREATE table TB
(
车辆 Nvarchar(20),
进场时间 smalldatetime,
出场时间 smalldatetime
)
insert tb
select '浙AXXX', '2009-06-01 12:31:23', '2009-06-01 17:31:23' union all
select '浙BXXX', '2009-06-02 12:31:23', '2009-06-03 17:31:23'
SELECT 时间,SUM(CASE WHEN CONVERT(nvarchar(10),进场时间,120)=时间 then 1 else 0 end) [进]
,SUM(CASE WHEN CONVERT(nvarchar(10),出场时间,120)=时间 then 1 else 0 end) [出]
FROM
(
SELECT DISTINCT 时间
FROM
( select CONVERT(nvarchar(10),进场时间,120) 时间 from tb
union all
select CONVERT(nvarchar(10),出场时间,120) from tb
) A
) T,tb
GROUP by 时间
/*
时间 进 出
---------- ----------- -----------
2009-06-01 1 1
2009-06-02 1 0
2009-06-03 0 1
*/
declare @t table(Car varchar(10),InTime datetime,OutTime datetime)
insert @t values('浙AXXX','2009-06-01 12:31:23','2009-06-01 17:31:23')
insert @t values('浙BXXX','2009-06-02 12:31:23','2009-06-03 17:31:23')
select Time,[In]=sum(Case when Class='in' then 1 else 0 end),
[Out]=sum(Case when Class='Out' then 1 else 0 end)
From
(select Time=Convert(varchar(10),Intime,120),Class='In',Con=Count(1) from @t Group by Convert(varchar(10),Intime,120)
union all
select Time=Convert(varchar(10),Outtime,120),Class='Out',Con=Count(1) from @t Group by Convert(varchar(10),Outtime,120)) t
group by Time
/*
Time In Out
---------- ----------- -----------
2009-06-01 1 1
2009-06-02 1 0
2009-06-03 0 1
*/
-------------------------------------------
-- Author: liangCK 小梁 & angellan 兰儿
-- Date : 2009-05-22 10:11:20
-------------------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (车辆 VARCHAR(6),进场时间 DATETIME,出场时间 DATETIME)
INSERT INTO @T
SELECT '浙AXXX','2009-06-01 12:31:23','2009-06-01 17:31:23' UNION ALL
SELECT '浙BXXX','2009-06-02 12:31:23','2009-06-03 17:31:23'
--SQL查询如下:
SELECT
CONVERT(VARCHAR(10),时间,120) AS 时间,
SUM(CASE WHEN flag='IN' THEN 1 ELSE 0 END) AS 进,
SUM(CASE WHEN flag='OUT' THEN 1 ELSE 0 END) AS 出
FROM (
SELECT 进场时间 AS 时间,'IN' AS flag FROM @T
UNION ALL
SELECT 出场时间,'OUT' FROM @T
) AS T
GROUP BY CONVERT(VARCHAR(10),时间,120)
/*
时间 进 出
---------- ----------- -----------
2009-06-01 1 1
2009-06-02 1 0
2009-06-03 0 1
(3 row(s) affected)
*/
--> 测试数据: @a
declare @a table (车辆 varchar(6),进场时间 datetime,出场时间 datetime)
insert into @a
select '浙AXXX','2009-06-01 12:31:23','2009-06-01 17:31:23' union all
select '浙BXXX','2009-06-02 12:31:23','2009-06-03 17:31:23'
select 时间=convert(varchar(10),时间,120),进=sum(case type when 1 then 1 else 0 end),
出=sum(case type when 0 then 1 else 0 end)
from
(select 时间=进场时间,type=1 from @a
union all
select 时间=出场时间,0 from @a)a
group by convert(varchar(10),时间,120)