首页 > 数据库 >SQL SERVER中的行传列

SQL SERVER中的行传列

时间:2023-07-04 20:12:31浏览次数:28  
标签:INFO NAME GRADE NUMBER SERVER SCORE USER SQL 行传列

--建表语句
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'SCORE_INFO') DROP TABLE SCORE_INFO;
CREATE TABLE SCORE_INFO(
SCORE_ID INT IDENTITY(1,1) NOT NULL,
USER_NAME VARCHAR(20) NOT NULL,
SCORE_NAME VARCHAR(40) NOT NULL,
SCORE_NUMBER INT NOT NULL,
SCORE_GRADE VARCHAR(20) NOT NULL,
CONSTRAINT SCORE_INFO_PK1 PRIMARY KEY(SCORE_ID),
CONSTRAINT SCORE_INFO_AK1 UNIQUE(USER_NAME,SCORE_NAME,SCORE_NUMBER)
);

--插入数据
INSERT INTO SCORE_INFO (USER_NAME,SCORE_NAME,SCORE_NUMBER,SCORE_GRADE) VALUES('张三','全栈','100','优秀');
INSERT INTO SCORE_INFO (USER_NAME,SCORE_NAME,SCORE_NUMBER,SCORE_GRADE) VALUES('张三','上位机','95','优秀');
INSERT INTO SCORE_INFO (USER_NAME,SCORE_NAME,SCORE_NUMBER,SCORE_GRADE) VALUES('张三','WEB开发','81','良好');
INSERT INTO SCORE_INFO (USER_NAME,SCORE_NAME,SCORE_NUMBER,SCORE_GRADE) VALUES('张三','架构班','70','一般');
INSERT INTO SCORE_INFO (USER_NAME,SCORE_NAME,SCORE_NUMBER,SCORE_GRADE) VALUES('张三','高级班','50','不合格');

--按数值型行传列
SELECT
[USER_NAME],
SUM(CASE WHEN [SCORE_NAME] = '全栈' THEN [SCORE_NUMBER] ELSE 0 END) AS '全栈',
SUM(CASE WHEN [SCORE_NAME] = '上位机' THEN [SCORE_NUMBER] ELSE 0 END) AS '上位机',
SUM(CASE WHEN [SCORE_NAME] = 'WEB开发' THEN [SCORE_NUMBER] ELSE 0 END) AS 'WEB开发',
SUM(CASE WHEN [SCORE_NAME] = '架构班' THEN [SCORE_NUMBER] ELSE 0 END) AS '架构班',
SUM(CASE WHEN [SCORE_NAME] = '高级班' THEN [SCORE_NUMBER] ELSE 0 END) AS '高级班'
FROM
[SCORE_INFO]
GROUP BY [USER_NAME];

--按字符型行传列
SELECT
[USER_NAME],
MAX(CASE WHEN [SCORE_NAME] = '全栈' THEN [SCORE_GRADE] END) AS '全栈',
MAX(CASE WHEN [SCORE_NAME] = '上位机' THEN [SCORE_GRADE] END) AS '上位机',
MAX(CASE WHEN [SCORE_NAME] = 'WEB开发' THEN [SCORE_GRADE] END) AS 'WEB开发',
MAX(CASE WHEN [SCORE_NAME] = '架构班' THEN [SCORE_GRADE] END) AS '架构班',
MAX(CASE WHEN [SCORE_NAME] = '高级班' THEN [SCORE_GRADE] END) AS '高级班'
FROM
[SCORE_INFO]
GROUP BY [USER_NAME];

标签:INFO,NAME,GRADE,NUMBER,SERVER,SCORE,USER,SQL,行传列
From: https://www.cnblogs.com/armiwang/p/17526880.html

相关文章

  • MYSQL语句大全——收藏一波
     一、创建和删除数据库1、创建用户//创建用户且设置密码,在MySQL中行,但在Oracle中行----必须在超级管理员身份下操作createuserhncuidentifiedby'1234'2、创建数据库//创建数据库并手动指定编码格式CREATEDATABASEIFNOTEXISTShncuDEFAULTCHARACTERSET'ut......
  • 面试常问集锦——MySQL部分数据库的隔离级别
    聚集索引与非聚集索引的区别https://zhuanlan.zhihu.com/p/113917726Myisam引擎采用非聚集索引,索引与数据分开,叶子结点存放数据的地址。Innodb采用聚集索引,主键索引树的叶子结点存放真实数据,非主键索引树的叶子结点存放主键值索引底层的实现,为什么不选红黑树、B树等?总结(1)哈希表 ......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger存储过程一、一个简单的存储过程1,一个简单的存储过程delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建格式:createpr......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger 存储过程一、一个简单的存储过程1,一个简单的存储过程 delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建......
  • MacBook的mysql无法连接pycharm问题
    问题1:1018-Can'treaddirof'./luffy/'(errno:13-Permissiondenied)这个错误提示表明在Django应用程序中无法读取目录"./luffy/",MySQL数据库连接配置不正确或没有足够的权限访问数据库引起的。而我的连接配置是正确的,所以问题是没有足够的权限1.打开终端,用root用户进......
  • MySQL存储之为什么要使用B+树做为储存结构?
    导言:在使用MySQL数据库的时候,我们知道了它有两种物理存储结构,hash存储和B+树存储,由于hash存储使用的少,而B+树存储使用的范围就多些,如InnoDB和MYISAM引擎都是使用的B+树作为存储结构,B+树,顾名思义,它还是树形结构,那么它是怎么演变过来的,那么就需要从数据结构的角度来分析了一.顺......
  • Windows和Linux下mysql新建用户
    Windows下载xampp,同时启动Apache(设端口为8081)和mysql(3306)。启动cmd,mysql-uroot-p登录root权限,密码默认为空。然后设置root密码setpasswordfor'root'@'localhost'=password('123456');flushprivileges;访问localhost:8081/phpmyadmin,用户名root,输入密码即可进入图形界......
  • mysql数据库语法总结--存储过程、函数、视图、触发器、表
    ​概述抽空总结一下mysql的一些概念性内容,涉及存储过程、函数、视图、触发器等。一、查看存储过程、函数、视图、触发器、表1、存储过程select*frommysql.procwheretype='PROCEDURE';showprocedurestatus;showcreateprocedureproc_name;//存储过程定义​编......
  • pandas.to_sql指定字段类型
    考虑使用dtype参数将SQLAlchemy类型pandas.DataFrame.to_sql的字典传递给命名列:importsqlalchemydata.to_sql(name=table_name,con=engine,if_exists='replace',index=False,dtype={'name_of_datefld':sqlalchemy.types.DateTime(),......
  • shell脚本:对开发入库的sql脚本进行检查
    shell脚本内容为:点击查看代码#!/bin/bashexportLANG=en_US.UTF-8exportNLS_LANG="AMERICAN_AMERICA.AL32UTF8"source/etc/profilesource/root/.bash_profileHOME=$(cd$(dirname$0);pwd)DOC_HOME=${HOME}/releasedocDOC_SVN_PATH=http://192.168.xx.xx/bushi......