二表关联查询问题(从access转到sql中碰到的问题)

tristsesame 2002-11-23 04:42:45
表: Degree
职场 课别 职场别 学历 人数
冲压部 01 0110 大专 10
冲压部 02 0210 本科 20
冲压部 02 0210 中专 10
模具部 01 0130 大专 3
模具部 01 0130 高中 50
模具部 02 0260 大专 10

希望由上表转成下表(在access中可以实现)
职场 课别 职场别 高中 中专 大专 本科
冲压部 01 0110 0 0 10 0
冲压部 02 0210 0 10 0 20
模具部 01 0130 50 0 3 0
模具部 02 0260 0 0 10 0

ACCESS中是这样实现的
TRANSFORM Sum(Degree.人数) AS 值
SELECT Degree.职场, Degree.课别, Degree.职场别, Sum(Degree.人数) AS 合计
FROM Degree
GROUP BY Degree.职场, Degree.课别, Degree.职场别
PIVOT Degree.学历

现在想转到ms sql中,如何实现才好,各位多赐教,谢谢
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2002-11-23
  • 打赏
  • 举报
回复
哦!!小弟一时大意了!!!呵呵!
select 职场,课别,职场别,
sum(case 学历 when '高中' then 人数 ELSE 0 end) 高中,
sum(case 学历 when '中专' then 人数 ELSE 0 end) 中专,
sum(case 学历 when '大专' then 人数 ELSE 0 end) 大专,
sum(case 学历 when '本科' then 人数 ELSE 0 end) 本科
from Degree group by 职场,课别,职场别
j9988 2002-11-23
  • 打赏
  • 举报
回复
大力昨晚没吃晚饭,晕了!

select 职场,课别,职场别,
sum(case 学历 when '高中' then 人数 ELSE 0 end) 高中,
sum(case 学历 when '中专' then 人数 ELSE 0 end) 中专,
sum(case 学历 when '大专' then 人数 ELSE 0 end) 大专,
sum(case 学历 when '本科' then 人数 ELSE 0 end) 本科
from Degree group by 职场,课别,职场别
tristsesame 2002-11-23
  • 打赏
  • 举报
回复
OK了
tks

...
from Degree group by 职场,课别,职场别,学历
...
pengdali 2002-11-23
  • 打赏
  • 举报
回复
奇怪!
pengdali 2002-11-23
  • 打赏
  • 举报
回复
select 职场,课别,职场别,sum(高中) 高中,sum(中专) 中专,sum(大专) 大专,sum(本科) 本科 from (select 职场,课别,职场别,
case 学历 when '高中' then sum(人数) ELSE 0 end 高中,
case 学历 when '中专' then sum(人数) ELSE 0 end 中专,
case 学历 when '大专' then sum(人数) ELSE 0 end 大专,
case 学历 when '本科' then sum(人数) ELSE 0 end 本科
from Degree group by 职场,课别,职场别
)A group by 职场,课别,职场别
tristsesame 2002-11-23
  • 打赏
  • 举报
回复
刚试了一下,发现还是与结果有差距
不能对相同的 职场 课别 职场别 进行合并
产生如下的结果

职场 课别 职场别 高中 中专 大专 本科
冲压部 01 0110 0 0 10 0
冲压部 02 0210 0 0 0 20
冲压部 02 0210 0 10 0 0
模具部 01 0130 0 0 3 0
模具部 01 0130 50 0 0 0
模具部 02 0260 0 0 10 0
tristsesame 2002-11-23
  • 打赏
  • 举报
回复
谢谢拉
以前一直没用过CASE
一时想不到解决方法
pengdali 2002-11-23
  • 打赏
  • 举报
回复
select 职场,课别,职场别,
case 学历 when '高中' then sum(人数) ELSE 0 end 高中,
case 学历 when '中专' then sum(人数) ELSE 0 end 中专,
case 学历 when '大专' then sum(人数) ELSE 0 end 大专,
case 学历 when '本科' then sum(人数) ELSE 0 end 本科
from Degree group by 职场,课别,职场别
pengdali 2002-11-23
  • 打赏
  • 举报
回复
select 职场,课别,职场别,
case 学历 when '高中' then sum(人数) end 高中,
case 学历 when '中专' then sum(人数) end 中专,
case 学历 when '大专' then sum(人数) end 大专,
case 学历 when '本科' then sum(人数) end 本科
from Degree group by 职场,课别,职场别

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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