zoukankan      html  css  js  c++  java
  • 数据库实现动态表头


    适用行:主要适用于表头的不确定性 比如专家评分时 未评的专家不显示在表头中

    关键点:数据库的列转行


    下面开始实现:

    1:建表

    CREATE  TABLE Student
    (
        student_id int PRIMARY KEY IDENTITY(1,1),
        student_name varchar(20) NOT NULL    
    )
    
    CREATE TABLE Teacher
    (
        teacher_id int PRIMARY KEY IDENTITY(1,1),
        teacher_name varchar(20) NOT NULL
    )
    
    CREATE TABLE Marks
    (
        student_id int FOREIGN KEY REFERENCES Student(student_id) ON UPDATE CASCADE ON DELETE CASCADE,
        teacher_id int FOREIGN KEY REFERENCES Teacher(teacher_id) ON UPDATE CASCADE ON DELETE CASCADE,
        PRIMARY KEY(student_id,teacher_id),
        mark int NOT NULL
    )

    2:插入数据

    INSERT INTO Student VALUES('李鹏')
    INSERT INTO Student VALUES('张三')
    INSERT INTO Student VALUES('小四')
    
    INSERT INTO Teacher VALUES('李老师')
    INSERT INTO Teacher VALUES('王老师')
    INSERT INTO Teacher VALUES('邓老师')
    INSERT INTO Teacher VALUES('不该出现的老师')
    
    INSERT INTO Marks VALUES(1,1,10)
    INSERT INTO Marks VALUES(1,2,20)
    INSERT INTO Marks VALUES(1,3,30)
    INSERT INTO Marks VALUES(2,1,40)
    INSERT INTO Marks VALUES(2,2,50)
    INSERT INTO Marks VALUES(3,3,60)

    3:动态表查询语句

    DECLARE @sql varchar(2000)
    
    SET @sql = 'SELECT student_name AS [姓名]'
    
    SELECT @sql = @sql + ',MAX(CASE teacher_id WHEN ''' + cast(A.teacher_id as nvarchar(5)) + ''' THEN mark ELSE NULL END ) AS [ ' + teacher_name + ' 评分]'
    FROM (SELECT DISTINCT teacher_id FROM Marks ) as A INNER JOIN Teacher ON Teacher.teacher_id = A.teacher_id
    
    SET @sql = @sql + ' FROM Marks INNER JOIN Student ON  Marks.student_id = Student.student_id GROUP BY student_name'
    exec(@sql) 
    print @sql

    4:遇到的错误以及处理方法

    ①:一定要注意 该有空格的地方必须有空格,该有逗号的地方有逗号

    ②:下列错误是因为 A.teacher_id是  int 类型的如果没有转化为nvarchar类型

    image

  • 相关阅读:
    2014下半年软考总结
    Java学习之Filter
    java学习之PreparedStatement
    java学习之dom4j 对 xml的读取
    Windows查看端口占用及杀掉进程
    CentOS压力测试工具Tsung安装和图形报表生成Tsung安装配置
    Tsung压力测试:Openfire
    CentOS Mysql安装配置
    nodejs、webpack
    IOS操作系统上执行monkey测试
  • 原文地址:https://www.cnblogs.com/lipeng0824/p/4373717.html
Copyright © 2011-2022 走看看