createtable abc ( student varchar(50), class varchar(50), grade int ) INSERTINTO abc SELECT'孙小美','数学',10UNIONALL SELECT'孙小美','语文',20UNIONALL SELECT'孙小美','英语',30UNIONALL SELECT'阿土伯','数学',40UNIONALL SELECT'阿土伯','语文',50UNIONALL SELECT'阿土伯','英语',60UNIONALL SELECT'小叮铛','数学',70UNIONALL SELECT'小叮铛','语文',80UNIONALL SELECT'小叮铛','英语',90 SELECT student, MAX(数学) AS 数学, MAX(语文) AS 语文, MAX(英语) AS 英语 FROM ( SELECT student, CASE class WHEN'数学'THEN grade ENDAS 数学, CASE class WHEN'语文'THEN grade ENDAS 语文, CASE class WHEN'英语'THEN grade ENDAS 英语 FROM abc ) AS a GROUPBY student
/**//* 代码 进货单位 药类 让利金额 01 广州 西药 10 01 广州 中成药 9 01 广州 医材 8 01 广州 中草药 7 02 西安 西药 2 02 西安 医材 6 03 深圳 西药 5 */ select 代码,进货单位, "西药"=(select 让利金额 from abc where 药类 ='西药' and 代码=t1.代码), "中成药"=(select 让利金额 from abc where 药类 ='中成药' and 代码=t1.代码), "医材 "=(select 让利金额 from abc where 药类 ='医材' and 代码=t1.代码), "中草药"=(select 让利金额 from abc where 药类 ='中草药' and 代码=t1.代码), "合计"=(select sum(药类) from abc where 代码=t1.代码 group by 代码) from abc t1 group by 代码,进货单位 /**//* 代码 进货单位 西药 中成药 医材 中草药 合计 01 广州 10 9 8 7 34 02 西安 2 0 6 0 8 */