黑马程序员技术交流社区

标题: 如何实现sql server的行列转换 [打印本页]

作者: 咖喱猫    时间: 2013-7-22 22:56
标题: 如何实现sql server的行列转换

  1. (select count(Student.mzId)as 人数,Minzu.name as 民族 from Minzu
  2. INNER JOIN
  3. dbo.Student ON dbo.Minzu.id = dbo.Student.mzId
  4. group by Minzu.name )

复制代码

第一张图片为查询结果,现在想实现一个行列转换的功能如图第二章,求解答

作者: changvh    时间: 2013-7-23 07:47
  1. select

  2. SUM(case name when '藏族' then peopleCount end) as [藏族],
  3. SUM(case name when '朝鲜族' then peopleCount end) as [朝鲜族],
  4. SUM(case name when '汉族' then peopleCount end) as [汉族],
  5. SUM(case name when '苗族' then peopleCount end) as [苗族],
  6. SUM(case name when '维吾尔族' then peopleCount end) as [维吾尔族]

  7. from Minzu
复制代码

作者: 咖喱猫    时间: 2013-7-23 08:36
changvh 发表于 2013-7-23 07:47
  1. select
  2. case Minzu.name when '藏族' then count(Student.mzId) end as [藏族],
  3. case Minzu.name when '朝鲜族' then count(Student.mzId) end as [朝鲜族],
  4. case Minzu.name when '汉族' then count(Student.mzId) end as [汉族],
  5. case Minzu.name when '苗族' then count(Student.mzId) end as [苗族],
  6. case Minzu.name when '维吾尔族' then count(Student.mzId) end as [维吾尔族]
  7. from Minzu inner join Student on Minzu.id=Student.mzId
  8. group by Minzu.name
复制代码

作者: 咖喱猫    时间: 2013-7-23 08:37
咖喱猫 发表于 2013-7-23 08:36

很感您同学的参与回答,不过这么写不符合要求了;现在的要求就是两表查询,并且是动态的
作者: changvh    时间: 2013-7-23 10:54
咖喱猫 发表于 2013-7-23 08:37
很感您同学的参与回答,不过这么写不符合要求了;现在的要求就是两表查询,并且是动态的 ...

可能是我错了吧,同学你的问题都是难度太大的,我无能为力

jdfw.gif (521.59 KB, 下载次数: 0)

jdfw.gif





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2