SELECT * FROM test5 ; RESOURCES DATETIME CNT ID1 0 2018-01-22 4 12 0 2018-01-24 10 23 0 2018-01-25 25 34 0 2018-01-26 14 45 0 2018-01-29 3 56 1 2018-01-29 22 67 2 2018-01-29 1 78 1 2018-01-30 44 89 2 2018-01-30 7 910 2 2018-01-31 1 1011 2 2018-02-01…
普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 张三 数学 张三 物理 李四 语文 李四 数学 李四 物理 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 张三 ------------------- */ create table tb(姓名 varchar() , 课程 varchar() , 分数 int) insert into tb values() insert into tb values() in…
http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769682.html SQL利用Case When Then多条件判断SQL ,用于select,生成新字段,可以理解 另外,如何用于 update 多条件判断? http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769688.html 此文尚未阅读…
刚入手公司项目,需要添加一个功能,用到了SQL的case when以及concat SELECT eve.cc, eve.sc, case concat(cc,sc) ' THEN '' ' THEN '得意先' ' THEN '仕入先' ' THEN '得意先/仕入先' ELSE '' END as client_supplier_class FROM ( SELECT bd0.id, bd0.created, bd0.creator, bd0.modified, bd0.modifier,…
在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) 2.行转列sql SELECT * FROM [StudentScores] /*数据源*/ AS P PIVOT ( SUM(Score/*行转…
说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行. 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  列转行案例…
原表:转过的表: 代码: ) set @sql = 'select AssetRecordId ' select @sql = @sql + ' , max(case ExtendName when ''' + ExtendName + ''' then ExtendValue else null end) [' + ExtendName + ']' ) as a set @sql = @sql + ' from dbo.AssetExtend where AssetRecordId=61 gr…
DECLARE @T TABLE (columnName varchar(100) NOT NULL PRIMARY KEY); INSERT INTO @T SELECT columnName from QuanGuo_Credit..shixin_quanguo where isnull(columnName,'')!='' group by columnName; DECLARE @SQL varchar(max)=N''; SET @SQL=STUFF((SELECT N','+QUOT…
SQL 行转列和列转行 行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和总结过.为了加深认识,再总结一次. 行列互转,可以分为静态互转,即事先就知道要处理多少行(列);动态互转,事先不知道处理多少行(列). 1 --创建测试环境 2 USE tempdb; 3 GO 4 5 IF OBJECT_ID('dbo.Orders') IS NOT NU…
行列互转 复制代码 create table test(id ),quarter int,profile int) insert into test values(,,) insert into test values(,,) insert into test values(,,) insert into test values(,,) insert into test values(,,) insert into test values(,,) insert into test values(…