create table abc
(
student varchar(50),
class varchar(50),
grade int
)
INSERT INTO abc
SELECT '孙小美','数学',10 UNION ALL
SELECT '孙小美','语文',20 UNION ALL
SELECT '孙小美','英语',30 UNION ALL
SELECT '阿土伯','数学',40 UNION ALL
SELECT '阿土伯','语文',50 UNION ALL
SELECT '阿土伯','英语',60 UNION ALL
SELECT '小叮铛','数学',70 UNION ALL
SELECT '小叮铛','语文',80 UNION ALL
SELECT '小叮铛','英语',90
SELECT
student,
MAX(数学) AS 数学,
MAX(语文) AS 语文,
MAX(英语) AS 英语
FROM
(
SELECT
student,
CASE class WHEN '数学' THEN grade END AS 数学,
CASE class WHEN '语文' THEN grade END AS 语文,
CASE class WHEN '英语' THEN grade END AS 英语
FROM abc
) AS a
GROUP BY student
(
student varchar(50),
class varchar(50),
grade int
)
INSERT INTO abc
SELECT '孙小美','数学',10 UNION ALL
SELECT '孙小美','语文',20 UNION ALL
SELECT '孙小美','英语',30 UNION ALL
SELECT '阿土伯','数学',40 UNION ALL
SELECT '阿土伯','语文',50 UNION ALL
SELECT '阿土伯','英语',60 UNION ALL
SELECT '小叮铛','数学',70 UNION ALL
SELECT '小叮铛','语文',80 UNION ALL
SELECT '小叮铛','英语',90
SELECT
student,
MAX(数学) AS 数学,
MAX(语文) AS 语文,
MAX(英语) AS 英语
FROM
(
SELECT
student,
CASE class WHEN '数学' THEN grade END AS 数学,
CASE class WHEN '语文' THEN grade END AS 语文,
CASE class WHEN '英语' THEN grade END AS 英语
FROM abc
) AS a
GROUP BY 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
*/
代码 进货单位 药类 让利金额
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
*/