求用SQL 语句生成如下结果,急

groupliu 2005-07-08 05:13:59
表单
姓名 性别 年龄 收入 在职状况 工种
张三 男 20 500 在职 焊工
李四 女 25 400 在职 焊工
王二 男 35 1200 在职 焊工
麻子 男 50 300 离职 钳工


通过SQL 语句生成如下结果
工种 男 女 年龄<=35 年龄>35 收入>1000 收入<1000 在职 离职
焊工 2 1 3 0 1 2 3 0
钳工 1 0 0 1 0 1 0 1
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellofox2000 2005-07-08
  • 打赏
  • 举报
回复
偶和楼上的想法一样,也想赚点儿分的
zlp321002 2005-07-08
  • 打赏
  • 举报
回复
--晕.大家怎么这么快??周末都不早点回家??还想周末赚点分呢!呵呵!
zlp321002 2005-07-08
  • 打赏
  • 举报
回复
--测试环境
declare @t table(姓名 varchar(10),性别 varchar(4),年龄 int,收入 int,在职情况 varchar(10),工种 varchar(5))
insert @t select '张三', '男', 20, 500, '在职', '焊工'
union all select '李四', '女', 25, 400, '在职', '焊工'
union all select '王二', '男', 35, 1200, '在职', '焊工'
union all select '麻子', '男', 50, 300, '离职', '钳工'
--查询语句
select 工种,
男=sum(case 性别 when '男' then 1 else 0 end),
女=sum(case 性别 when '女' then 1 else 0 end),
'年龄<=35'=sum(case when 年龄<=35 then 1 else 0 end),
'年龄>35'=sum(case when 年龄>35 then 1 else 0 end),
'收入>1000'=sum(case when 收入>1000 then 1 else 0 end),
'收入<1000'=sum(case when 收入<1000 then 1 else 0 end),
在职=sum(case 在职情况 when '在职' then 1 else 0 end),
离职=sum(case 在职情况 when '离职' then 1 else 0 end)
from @t
group by 工种
--结果

(所影响的行数为 4 行)

工种 男 女 年龄<=35 年龄>35 收入>1000 收入<1000 在职 离职
----- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
焊工 2 1 3 0 1 2 3 0
钳工 1 0 0 1 0 1 0 1

(所影响的行数为 2 行)
edgethinking 2005-07-08
  • 打赏
  • 举报
回复
select 工种, 男 = sum(case 性别 when '男' then 1 else 0 end),
女 = sum(case 性别 when '女' then 1 else 0 end),
年龄1 = (select count(*) from 表 where 年龄 <= 35),
年龄2 = (select count(*) from 表 where 年龄 > 35),
收入1 = (select count(*) from 表 where 收入 >= 1000),
收入2 = (select count(*) from 表 where 收入 < 1000),
在职 = (select count(*) from 表 where 在职状况 = '在职'),
离职 = (select count(*) from 表 where 在职状况 = '离职')
from 表 group by 工种

paoluo 2005-07-08
  • 打赏
  • 举报
回复

--建立测试环境
Create Table TEST
(姓名 Nvarchar(10),
性别 Nvarchar(2),
年龄 Int,
收入 Int,
在职状况 Nvarchar(10),
工种 Nvarchar(10))
--插入数据
Insert TEST Values(N'张三', N'男', 20, 500, N'在职', N'焊工')
Insert TEST Values(N'李四', N'女', 25, 400, N'在职', N'焊工')
Insert TEST Values(N'王二', N'男', 35, 1200, N'在职', N'焊工')
Insert TEST Values(N'麻子', N'男', 50, 300, N'离职', N'钳工')
--测试
Select
工种,
SUM(Case 性别 When N'男' Then 1 Else 0 End) As 男,
SUM(Case 性别 When N'女' Then 1 Else 0 End) As 女,
SUM(Case When 年龄<=35 Then 1 Else 0 End) As N'年龄<=35',
SUM(Case When 年龄>35 Then 1 Else 0 End) As N'年龄>35',
SUM(Case When 收入>1000 Then 1 Else 0 End) As N'收入>1000',
SUM(Case When 收入<1000 Then 1 Else 0 End) As N'收入<1000',
SUM(Case 在职状况 When N'在职' Then 1 Else 0 End) As 在职,
SUM(Case 在职状况 When N'离职' Then 1 Else 0 End) As 离职
from TEST
Group By 工种
--删除测试环境
Drop Table TEST
--结果
/*
工种 男 女 年龄<=35 年龄>35 收入>1000 收入<1000 在职 离职
焊工 2 1 3 0 1 2 3 0
钳工 1 0 0 1 0 1 0 1
*/
paoluo 2005-07-08
  • 打赏
  • 举报
回复

Select
工种,
SUM(Case 性别 When N'男' Then 1 Else 0 End) As 男,
SUM(Case 性别 When N'女' Then 1 Else 0 End) As 女,
SUM(Case When 年龄<=35 Then 1 Else 0 End) As N'年龄<=35',
SUM(Case When 年龄>35 Then 1 Else 0 End) As N'年龄>35',
SUM(Case When 收入>1000 Then 1 Else 0 End) As N'收入>1000',
SUM(Case When 收入<1000 Then 1 Else 0 End) As N'收入<1000',
SUM(Case 在职状况 When N'在职' Then 1 Else 0 End) As 在职,
SUM(Case 在职状况 When N'离职' Then 1 Else 0 End) As 离职
from TEST
Group By 工种
子陌红尘 2005-07-08
  • 打赏
  • 举报
回复
select
工种,
男 = sum(case 性别 when '男' then 1 else 0 end),
女 = sum(case 性别 when '女' then 1 else 0 end),
[年龄<=35] = sum(case when 年龄<= 35 then 1 else 0 end),
[年龄>35] = sum(case when 年龄 > 35 then 1 else 0 end),
[收入>1000] = sum(case when 收入 > 1000 then 1 else 0 end),
[收入<1000] = sum(case when 收入 < 1000 then 1 else 0 end),
在职 = sum(case 在职状况 when '在职' then 1 else 0 end),
离职 = sum(case 在职状况 when '离职' then 1 else 0 end)
from

group by
工种
wangdehao 2005-07-08
  • 打赏
  • 举报
回复
select 工种,男=sum(case when 性别='男' then 1 else 0 end ),女=sum(case when 性别='女' then 1 else 0 end ),[年龄<=35]=sum(case when 年龄<=35 then 1 else 0 end),[年龄>35]=sum(case when 年龄<=35 then 1 else 0 end),[收入>1000]=sum(case when 收入>1000 then 1 else 0 end),[收入<1000]=sum(case when 收入<1000 then 1 else 0 end),在职=sum(case when 在职状况='在职' then 1 else 0 end),离职=sum(case when 在职状况='离职'then 1 else 0 end) from table group by 工种

34,590

社区成员

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

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