MS SQL 行转列难题
--创建表 employee如下
CREATE TABLE employee(
name varchar(20),
sex nvarchar(2),
Seniority int,
check (sex in('男','女')))
--如插入6条数据
insert employee values('张俕','男',3);
insert employee values('小儿','男',1)
insert employee values('大意','女',0)
insert employee values('李斯','女',1)
insert employee values('王武','男',2)
insert employee values('孙琦','女',3)
--希望得到以下格式结果
seniority人数(男) 人数(女)
小于1年
大于等于2年
总数
用sql 语句怎么写?
MS?SQL 行转列 疑难问题 欢迎高手
[解决办法]
select N'小于1年' as seniority,
sum(case when sex=N'男'then 1 else 0 end)as [人数(男)],
sum(case when sex=N'男'then 0 else 1 end)as [人数(女)]
from employee values
where seniority<1
union all
select N'大于等于2年' as seniority,
sum(case when sex=N'男'then 1 else 0 end)as [人数(男)],
sum(case when sex=N'男'then 0 else 1 end)as [人数(女)]
from employee values
where seniority>=2
[解决办法]
SELECT
'小于1年' as Seniority,
MAX(CASE sex WHEN '男' THEN 1 ELSE 0 END) AS '人数(男)',
MAX(CASE sex WHEN '女' THEN 1 ELSE 0 END) AS '人数(女)'
FROM #Tmp_employee
where Seniority < 1
union all
SELECT
'大于等于2年' as seniority,
Sum(CASE sex WHEN '男' THEN 1 ELSE 0 END) AS '人数(男)',
Sum(CASE sex WHEN '女' THEN 1 ELSE 0 END) AS '人数(女)'
FROM #Tmp_employee
where Seniority >=2