数据库中字段
时间 状态
2012-07-05 入职
2012-07-08 入职
2012-05-03 离职
统计结果显示 时间 入职人数 离职人数
2012-07 2 0
2012-05 0 1
该如何查询?
时间 状态
2012-07-05 入职
2012-07-08 入职
2012-05-03 离职
统计结果显示 时间 入职人数 离职人数
2012-07 2 0
2012-05 0 1
该如何查询?
解决方案 »
- VB连接 sql数据库 错误处理
- 请教MSDE升级到SQL Server Express2005的问题
- 一个小问题
- sql多表连接问题
- 在sql server2005中查询表的字段的备注(说明),为什么会报错误呢: 对象名 'sysproperties' 无效。如何解决?
- ms sql 2005 的数据库可以导到(还原or恢复)ms sql 2000 里面么?
- 求SQL解决平均值语句
- 简单问题:用"select * into 新表 from 表1 "语句,怎么让生成表和“新表”表结构完全一样呢?
- 查找某一分组
- 高手请进,问查询方法!
- sqlserver2000升级到2008风险大吗?风险体现在何处?
- 一个简单的sql语句问题
sum(case when 状态='离职' then 1 else 0 end ) as '离职数'
from 表
group by 时间
create table tb
(时间 datetime,状态 nvarchar(2))insert into tb
select '2012-07-05', '入职' union all
select '2012-07-08', '入职' union all
select '2012-05-03', '离职'select CONVERT (varchar(7),时间,120) 时间 ,
sum(case when 状态='入职' then 1 else 0 end ) 入职人数,
sum(case when 状态='离职' then 1 else 0 end ) 离职人数
from tb
group by CONVERT (varchar(7),时间,120)
go
create table [TB] (时间 datetime,状态 nvarchar(4))
insert into [TB]
select '2012-07-05','入职' union all
select '2012-07-08','入职' union all
select '2012-05-03','离职'select * from [TB]
SELECT CONVERT(VARCHAR(7),时间,120) AS 时间,
SUM(CASE WHEN 状态 ='入职' THEN 1 ELSE 0 END ) AS '入职人数',
SUM(CASE WHEN 状态 ='离职' THEN 1 ELSE 0 END ) AS '离职人数'
FROM dbo.TB
GROUP BY CONVERT(VARCHAR(7),时间,120)
/*
时间 入职人数 离职人数
------- ----------- -----------
2012-05 0 1
2012-07 2 0(2 行受影响)*/
sum(case when 状态='离职' then 1 else 0 end) as '离职人数' from 表名 group by month(时间)
--测试数据
IF OBJECT_ID('[TB]') IS NOT NULL
DROP TABLE [TB]
GO
CREATE TABLE [TB](DATE datetime,STATUS nvarchar(4))
INSERT INTO [TB]
SELECT '2012-07-05','入职' UNION ALL
SELECT '2012-07-08','入职' UNION ALL
SELECT '2012-05-03','离职'
--SELECT * FROM TB
--开始查询
SELECT CONVERT(VARCHAR(7),DATE,23) AS 时间,
SUM(CASE WHEN STATUS ='入职' THEN 1 ELSE 0 END ) AS '入职人数',
SUM(CASE WHEN STATUS ='离职' THEN 1 ELSE 0 END ) AS '离职人数'
FROM TB
GROUP BY CONVERT(VARCHAR(7),DATE,23)--查询结果
/*
DATA 入职人数 离职人数
------- ----------- -----------
2012-05 0 1
2012-07 2 0(2 行受影响)*/