天天看点

SQL查询结果列转行

数据库-行转列的语法

1.表: PerTab

字段:name,  title,  values

原内容:一月  产品A   120

    二月  产品A   20

    一月  产品B    230

    二月  产品B   400

-----------------------------------------------

查询结果: 月份  产品A  产品B  数量(Values)

      一月  120   230

      二月  20   400

-----------------------------------------------

SQl语法:

select name, sum(case title when '产品A' then values else 0 end ) as 产品A  from PerTab group by name 
           

备注: 其中中间的可以重复,得到所有的列

还可以用这样的SQL语句:

可以自动生成的语句:

示例二:

stuNo stuName

1   aa

2    bb

stuNo course result

1   Chinese 80

1   English 92

2   Chinese 75

2   English 86

要求显示如下:

stuNo stuName Englist Chinese total

1    aa   80    92   172

1    bb  75    86  161

示例三:

姓名 课程 分数

---- ---- ----

张三 语文 74

张三 数学 83

张三 物理 93

李四 语文 74

李四 数学 84

李四 物理 94

结果:

姓名 语文 数学 物理

---- ---- ---- ----

李四 74 84 94

张三 74 83 93

-------------------

--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程

上面这条查询语句在DB2中也适用,本人验证过.//