sql语句备忘:非int类型行转列

如上图,result是varchar类型,需要行转列,百度到的都是对int类型的操作,折腾了很久,才整出来,在这里备个忘,不过据说性能方面堪忧,所以在这里也求看到大神指点指点,哪里还可以改进的,谢谢。

1 --不适用于有类型为text、ntext等不能执行distinct操作的字段
2 SELECT DISTINCT a.code,
3 (SELECT result FROM test b WHERE a.code=b.code AND b.type=1)AS‘初审‘,
4 (SELECT result FROM test b WHERE a.code=b.code AND b.type=2)AS‘复审‘
5 FROM test a  
1 select a.code,a.result ‘初审‘,b.result ‘复审‘ from
2 (SELECT code,result FROM test WHERE type=1) a
3  inner join (SELECT code,result FROM test WHERE  type=2 ) b on a.code=b.code
时间: 2024-11-08 20:39:44

sql语句备忘:非int类型行转列的相关文章

sql语句备忘

一:根据用户的得分查询其排名 答:先查出分数比当前用户高的有几个,在查出积分跟当前用户相等,时间早于这个用户的有几个,相加就是排名 或 set @i = 0;SELECT *, (@i := @i + 1) AS ranking from user_score order by score desc, create_time asc; 二:MySQL执行查询,增加自定义列从1开始增长到最大记录数模拟自增ID SET @mycnt = 0; SELECT (@mycnt := @mycnt + 1

工作中常用SQL 查询语句备忘

--当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列.select (case when a>b then a else b end ), (case when b>c then b esle c end) from table_name --求和查询 create table #tmp(rq varchar(10), shengfu nchar(1)) insert into #tmp values('2005-05-09','胜') insert into #tm

SQL注入备忘单

Find and exploit SQL Injections with free Netsparker SQL Injection Scanner SQL Injection Cheat Sheet, Document Version 1.4 About SQL Injection Cheat Sheet Currently only for MySQL and Microsoft SQL Server, some ORACLE and some PostgreSQL. Most of sam

Access sql语句创建表及字段类型(转)

http://www.cnblogs.com/hnyei/archive/2012/02/23/2364812.html 创建一张空表: Sql="Create TABLE [表名]" 创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))

sql内置函数pivot强大的行转列功能

原文:sql内置函数pivot强大的行转列功能 语法: PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 200

在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

原文:在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 求SQL遍历截取字符串 http://bbs.csdn.net/topics/390648078 从数据库中读取某一张表(数据若干),然后将某一字段进行截取.比如:字段A    字段Ba/a/c      xa/b

使用SQL语句查询表及表字段类型说明

今天突然遇到有人要数据库表及表字段说明,数据库表太多又不能一个个表去找,就想想SQL是否能直接查询出来. 经过查询资料,加上一些自己的一些调整写了一个sql语句,在此记录一下,以方便日后查找使用. SELECT ( CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ) N'表名' , ( CASE WHEN a.colorder = 1 THEN ISNULL(( SELECT TOP 1 value FROM sys.extended_prope

【日常傻逼】——拼接SQL语句时忘加单引号引发的仨小时时光的流失

string sql = "update Admin set authority = '"+ context.Request["auth"].ToString() + "' where loginname='" + context.Request["loginname"].ToString() + "'"; 拼接SQL时,往往单双引号都有,容易看的眼晕,或者一不小心就漏掉单引号. 虽然字段定义的是varch

利用SQL语句重置数据库中所有表的标识列(自增量)

可以应用于2种场景: 1.清空所有表中的数据,数据清空后,最好是能够让表中的标识列从1开始记数,所以要重置标识列的当前值. 2.用复制的方式,发布订阅同步数据之后,订阅端的数据不会自动增长,比如自增ID该9527了,但如果中间有跳过的ID,会自动填充缺失的路过的ID,该执行如下代码,即可从应该的9527开始增长. declare @tablename varchar(50) declare @sql varchar(1000) declare cur cursor for select name