dlxubo 发表于 2024-7-24 11:38:19

关于行列互换操作

要求:主从表记录学生信息

实现形式:       姓名        年龄           性别        班级          语文        数学           英语       
                     张三   15       男         二班      80      90       99               


wwbb 发表于 2024-7-24 11:38:20

本帖最后由 wwbb 于 2024-7-24 13:25 编辑

这个时候可能需要用到视图来完成


先看效果:


主表:


从表:



视图sql:
SELECT   
    z.姓名,
    z.年龄,
    z.性别,
    z.班级,
    MAX(CASE WHEN c.[课程] = '语文' THEN c.[成绩] ELSE NULL END) AS 语文,
    MAX(CASE WHEN c.[课程] = '数学' THEN c.[成绩] ELSE NULL END) AS 数学,
    MAX(CASE WHEN c.[课程] = '英语' THEN c.[成绩] ELSE NULL END) AS 英语
FROM   
    [主表] z
LEFT JOIN   
    [从表] c ON z.[姓名] = c.[姓名]
GROUP BY   
    z.[姓名], z.[年龄], z.[性别], z.[班级]



逛逛逛 发表于 2024-7-24 11:43:39

图文列表啊

wangpenga 发表于 2024-7-24 11:47:11

从表的姓名最好改成主表ID去关联

dlxubo 发表于 2024-7-24 12:11:58

wangpenga 发表于 2024-7-24 11:47
从表的姓名最好改成主表ID去关联

要把课程在表标题显示出来,值为成绩

逛逛逛 发表于 2024-7-24 12:54:06

dlxubo 发表于 2024-7-24 12:11
要把课程在表标题显示出来,值为成绩

用图文列表,和这个差不多的

dlxubo 发表于 2024-7-24 13:05:04

逛逛逛 发表于 2024-7-24 12:54
用图文列表,和这个差不多的

这个我也查到了,不符合要求

逛逛逛 发表于 2024-7-24 13:16:40

那就用sql 语句做查询吧

Nathan.guo 发表于 2024-7-24 16:53:04

:hjyzw:
页: [1]
查看完整版本: 关于行列互换操作