procedure dbo.CommonRowToCol @sql nvarchar(4000)
as
begin
--必须包含colname列和result列(不区分大小写),
--除colname列和result列 其余各列均会作为判别记录唯一性的条件
--使用时,只需将要作为列名的字段定义为colname,将欲显示的列定义为result即可
--如select student as 学生 ,course as colname,score result from class create table #temp([序号] int IDENTITY(1,1)) declare @sqlTemp nvarchar(4000...
最近在做项目的过程需要做一个比较复杂的统计报表,涉及行转列问题。
首先看看报表的格式要求:
格式中要求按照日期的查询进行动态查询列标题,以及将数据进行按照日期进行列展示。
针对此要求,可以做一个简单的例子进行说明,可以进行两个步骤的操作:
(1)先构造基本的数据;
(2)对构造的数据进行行转列操作。
create table test1(int test1,kqrq datetime,kqsj nvarchar(30));insert into test1(zh,kqrq,kqsj) values(1,‘...
PIVOT用于将列值旋转为列名(即行转列)语法:table_source
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN(<column_list>)
)
UNPIVOT用于将列明转为列值(即列转行)语法:table_source
UNPIVOT(
value_column
FOR pivot_column
IN(<column_list>)
)
注意:PIVOT、UNPIVOT是SQL Server 2005的语法,使用需修改数据库兼容级别
在数据库属性->选项->兼容级别改为
90一、行转列1、建立表格ifobject_id(‘tb‘)isnotnulldr...
项目中的过程比较复杂,我就自己建立一个测试库来进行说明。
首先建立数据表test,添加三个字段:姓名(name,varchar2(10))、课程(course,varchar2(10))、分数(score,varchar2(10))。
插入数据: insert into test(name,course,score) values(victor,物理,70)
insert into test(name,course,score) values(victor,英语,90)
insert into test(name,course,score) values(victor,数学,85)
insert into test...
参考链接:https://blog.csdn.net/rainyspring4540/article/details/50231435
t_vehicle表有如下数据:
sql初始化语句如下:
-- ----------------------------
-- Table structure for t_vehicle
-- ----------------------------
DROP TABLE IF EXISTS `t_vehicle`;
CREATE TABLE `t_vehicle` (`Vehicle_no` varchar(20) DEFAULT NULL,`Type` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------...
CREATE TABLE [StudentScores]
([UserName] NVARCHAR(20), --学生姓名[Subject] NVARCHAR(30), --科目[Score] FLOAT, --成绩
)INSERT INTO [StudentScores] SELECT ‘张三‘, ‘语文‘, 80
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘数学‘, 90
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘英语‘, 70
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘生物...
CREATE TABLE [StudentScores]
([UserName] NVARCHAR(20), --学生姓名[Subject] NVARCHAR(30), --科目[Score] FLOAT, --成绩
)INSERT INTO [StudentScores] SELECT ‘张三‘, ‘语文‘, 80
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘数学‘, 90
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘英语‘, 70
INSERT INTO [StudentScores] SELECT ‘张三‘, ‘生物...
转换前的 :ID name sex num1 tom 男 22 tom 男 33 tom 男 44 tom 男 5这是转换后的结果 ID name sex num1 num2 num3 num41 tom 男 2 3 4 5
select MIN(id) as ID, name, sex, sum(case when num=2 then 2 end) as num2,sum(case when num=3 then 3 end) as num3,sum(case when num=4 then 4 end) as num4,sum(case when num=5 then 5 end) as num5from 表名 group by name,se...
现有两表A,B A表存储商品点击日志,B表存储商品 要求显示当天所有商品点击量列表并附带总数并按天排序 代码如下: declare @sql varchar(2000) set @sql=select CONVERT(varchar(100), a.[Time], 23) as 时间,count(b.title) as 总数 select @sql =@sql+ ,sum(case b.title when +Title+ then 1 else 0 end) as +[+Title+] from (select distinct title from B) as B set @sql=@sql+ from A as a left join B as b on a.AId=B.Aid...