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 语句怎么写?
              
------解决方案--------------------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 '人数(女)'