请教个查询语句

nq19860409 2010-08-05 02:23:40
进出记录表
人员 信息 局站 门禁 时间
潘莲心 出门 临沂 临沂一楼 2007-10-10 16:36:39
杨恋香 进门 龚路 龚路1楼 2007-10-10 16:36:59
顾培忠 出门 北蔡 北蔡三楼 2007-10-10 16:37:08
杨恋香 出门 龚路 龚路1楼 2007-10-10 16:37:41
鲍国强 进门 北蔡 北蔡三楼 2007-10-10 16:41:14
薛晟 进门 沈家宅 沈家宅一楼 2007-10-10 16:38:20
顾培忠 进门 北蔡 北蔡三楼 2007-10-10 16:38:15


现在要查询出这样的结果

局站 进门次数 出门次数
北蔡 2 1

请问这样的 sql语句怎么写
...全文
87 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksaponka_tang 2010-08-05
  • 打赏
  • 举报
回复
use OA_DB
go

if object_id('tbk') is not null
drop table tbk
go
create table tbk( empld nvarchar(80), info nvarchar(60), Stat nvarchar(60), MJ nvarchar(80),DT Datetime)
insert tbk
select '潘莲心', '出门', '临沂', '临沂一楼', '2007-10-10 16:36:39' union all
select '杨恋香', '进门', '龚路', '龚路1楼', '2007-10-10 16:36:59' union all
select '顾培忠', '出门', '北蔡', '北蔡三楼', '2007-10-10 16:37:08' union all
select '杨恋香', '出门', '龚路', '龚路1楼', '2007-10-10 16:37:41' union all
select '鲍国强', '进门', '北蔡', '北蔡三楼', '2007-10-10 16:41:14' union all
select '薛晟', '进门', '沈家宅', '沈家宅一楼', '2007-10-10 16:38:20' union all
select '顾培忠', '进门', '北蔡', '北蔡三楼', '2007-10-10 16:38:15'


select Stat, sum(case info when '出门' then 1 else 0 end) 出门次數 ,sum(case info when '进门' then 1 else 0 end) 进门次數
from TBk
group by Stat

-------------------------------------
北蔡 1 2
龚路 1 1
临沂 1 0
沈家宅 0 1
zhengduan964532 2010-08-05
  • 打赏
  • 举报
回复

IF object_id('tb')IS NOT NULL DROP TABLE TB
CREATE TABLE tb(ry VARCHAR(10),INF VARCHAR(10),jz VARCHAR(10),mj VARCHAR(10),TIME VARCHAR(100))
INSERT INTO tb
SELECT '潘莲心' ,'出门' ,'临沂' ,'临沂一楼' ,'2007-10-10 16:36:39' UNION ALL
SELECT '杨恋香' ,'进门', '龚路', '龚路1楼', '2007-10-10 16:36:59' UNION ALL
SELECT '顾培忠' ,'出门' ,'北蔡' ,'北蔡三楼' ,'2007-10-10 16:37:08' UNION ALL
SELECT '杨恋香', '出门' ,'龚路', '龚路1楼' ,'2007-10-10 16:37:41' UNION ALL
SELECT '鲍国强' ,'进门' ,'北蔡' ,'北蔡三楼', '2007-10-10 16:41:14' UNION ALL
SELECT '薛晟', '进门', '沈家宅' ,'沈家宅一楼' ,'2007-10-10 16:38:20' UNION ALL
SELECT '顾培忠', '进门', '北蔡', '北蔡三楼' ,'2007-10-10 16:38:15'

SELECT * FROM tb

SELECT jz,
jm=sum(CASE WHEN inf='出门' THEN 1 ELSE 0 END ),
cm=sum(CASE WHEN inf='进门' THEN 1 ELSE 0 end)
FROM tb
GROUP BY jz

shixixi1987 2010-08-05
  • 打赏
  • 举报
回复

if exists(select * from sysobjects where [name]='tb')
drop table tb
go
create table tb
(
ry varchar(50),
xx varchar(50),
jz varchar(50),
mj varchar(50),
[time] datetime
)
go
insert into tb(ry,xx,jz,mj,[time])
(
select '潘莲心','出门','临沂','临沂一楼','2007-10-10 16:36:39' union
select '杨恋香','进门','龚路','龚路1楼','2007-10-10 16:36:59' union
select '顾培忠','出门','北蔡','北蔡三楼','2007-10-10 16:37:08' union
select '杨恋香','出门','龚路','龚路1楼','2007-10-10 16:37:41' union
select '鲍国强','进门','北蔡','北蔡三楼','2007-10-10 16:41:14' union
select '薛晟','进门','沈家宅','沈家宅一楼','2007-10-10 16:38:20' union
select '顾培忠','进门','北蔡','北蔡三楼','2007-10-10 16:38:15'
)
go
select jz,进门次数=sum(case when xx='进门' then 1 else 0 end),
出门次数=sum(case when xx='出门' then 1 else 0 end)
from tb group by jz
go

jz 进门次数 出门次数
-------------------------------------------------- ----------- -----------
北蔡 2 1
龚路 1 1
临沂 0 1
沈家宅 1 0
nq19860409 2010-08-05
  • 打赏
  • 举报
回复
懂了,多谢了
nq19860409 2010-08-05
  • 打赏
  • 举报
回复
6楼的你后面那四个
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'进门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
这是干嘛的呀
zyfcy 2010-08-05
  • 打赏
  • 举报
回复
第二个SQL应该是正确的,分别统计下进门和出门的次数.
nq19860409 2010-08-05
  • 打赏
  • 举报
回复
我的意思假设我要查询北蔡局站的进出记录次数,只要得到局站,进门次数,出门次数3个字段
zyfcy 2010-08-05
  • 打赏
  • 举报
回复
select loca,
sum(case type when '出门' then 1 else 0 end ) countout,
sum(case type when '进门' then 1 else 0 end ) countin
from (
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'进门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
) as a
group by loca
Cerse 2010-08-05
  • 打赏
  • 举报
回复
略懂略懂
nq19860409 2010-08-05
  • 打赏
  • 举报
回复
楼上的解释下吧,我查询的时候可以根据端局查询或者时间
zyfcy 2010-08-05
  • 打赏
  • 举报
回复

select loca,type,count(*) count
from (
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'进门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
union all
select '潘莲心' name,'出门' type,'临沂' loca,'临沂一楼' locade,'2007-10-10 16:36:39' time
) as a
group by loca,type
nq19860409 2010-08-05
  • 打赏
  • 举报
回复
就是统计进出门次数呀
天-笑 2010-08-05
  • 打赏
  • 举报
回复
啥意思?

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧