精华内容
下载资源
问答
  • 2021-01-18 19:04:08

    做工程的人来说,技术通过服务业务来产生价值,所以在提高技术的基础上,更多的是需要业务知识,更好得体现技术的价值。

    本文,主要结合业务中的需求点,来说明如何使用mysql实现表格的行列互换:

    【行转列】

    假设你有这样一个表,记录了每个销售部门,每一天的销售金额表1,每日各部门销售金额明细表

    use analysis;

    CREATE TABLE `tmp_department_sales` (

    `id` int(11) NOT NULL AUTO_INCREMENT FIRST,

    `sale_day` varchar(32) NULL,

    `department` varchar(32) NULL,

    `sales_mount` int(11) NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=InnoDB

    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

    这只是三天,四个部门的情况,如果是三个月,10个部门,那就是900行数据,看起来非常不方便,一般都会有这样的一个需求,如下:表2,按部门汇总

    那么怎么用mysql代码实现呢,其实很简单:

    select sale_day,

    sum(if(department='销售一部',sales_mount,0)) as 'dep_01',

    sum(if(department='销售二部',sales_mount,0)) as 'dep_02',

    sum(if(department='销售三部',sales_mount,0)) as 'dep_03',

    sum(if(department='销售四部',sales_mount,0)) as 'dep_04'

    from tmp_department_sales

    group by sale_day;

    这样就是用了一个sum(if())的组合,以上就是行转列的过程。

    【列转行】

    如果反过来,要从列转为行,就是基于表2,转换成表1。

    先得到一个表tmp_department_sale_rollup,可以实现表2的形式:

    use analysis;

    drop table if exists analysis.tmp_department_sale_rollup;

    create table if not exists analysis.tmp_department_sale_rollup

    select sale_day,

    sum(if(department='销售一部',sales_mount,0)) as 'dep_01',

    sum(if(department='销售二部',sales_mount,0)) as 'dep_02',

    sum(if(department='销售三部',sales_mount,0)) as 'dep_03',

    sum(if(department='销售四部',sales_mount,0)) as 'dep_04'

    from tmp_department_sales

    group by sale_day;

    select * from tmp_department_sale_rollup;

    然后用以下代码进行列转行,其实也很简单:

    select sale_day ,dep_01 as sales_mount,'销售一部' as department

    from tmp_department_sale_rollup

    union all

    select sale_day ,dep_02 as sales_mount,'销售二部' as department

    from tmp_department_sale_rollup

    union all

    select sale_day ,dep_03 as sales_mount,'销售三部' as department

    from tmp_department_sale_rollup

    union all

    select sale_day ,dep_04 as sales_mount,'销售四部' as department

    from tmp_department_sale_rollup;

    以上只是一种思路,肯定还会有其他的方案,欢迎小伙伴留言交流。

    更多相关内容
  • 主要介绍了C#实现DataGridView控件行列互换的方法,涉及C#中DataGridView控件元素遍历与添加操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 写一个函数名为convert,实现将给定的3× 3的整型数组转置(行列互换)。 要求:(1)由键盘按矩阵的形式输入3× 3的整型数组。 (2)函数的原型为:void convert(int b[3][3]) (3)在源程序中书写必要的注释。
  • 行列互换.txt

    2019-08-26 11:50:39
    本文档提供了一个sql server中行列互换的实例sql语句。
  • 行列互换

    2021-05-24 08:06:26
    --> --> (Roy)生成測試數據if not object_id('Class') is nulldrop table ClassGoCreate table Class([Student] nvarchar(2),[数学] int,[物理] int,[英语] int,[语文] int)Insert Classselect N'李四',77,85,...

    --> --> (Roy)生成測試數據

    if not object_id('Class') is null

    drop table Class

    Go

    Create table Class([Student] nvarchar(2),[数学] int,[物理] int,[英语] int,[语文] int)

    Insert Class

    select N'李四',77,85,65,65 union all

    select N'张三',87,90,82,78

    go

    declare @s nvarchar(4000),@s2 nvarchar(4000),@s3 nvarchar(4000),@s4 nvarchar(4000)

    select

    @s=isnull(@s+',','declare ')+'@'+rtrim(Colid)+' nvarchar(4000)',

    @s2=isnull(@s2+',','select ')+'@'+rtrim(Colid)+'='''+case when @s2 is not null then 'union all select' else ' select ' end+' [科目]='''+quotename(Name,'''')+'''''',

    @s3=isnull(@s3,'')+'select @'+rtrim(Colid)+'=@'+rtrim(Colid)+'+'',''+quotename([Student])+''=''+quotename('+quotename(Name)+','''''''') from Class ',

    @s4=isnull(@s4+'+','')+'@'+rtrim(Colid)

    from

    syscolumns

    where

    id=object_id('Class') and Name not in('Student')

    --print @s+' '+@s2+' '+@s3+' exec('+@s4+')' 显示执行语句

    exec(@s+' '+@s2+' '+@s3+' exec('+@s4+')')

    /*

    科目 李四 张三

    ---- ---- ----

    数学 77 87

    物理 85 90

    英语 65 82

    语文 65 78

    */

    另类显示格式,把列数转为行数显示

    if not object_id('Class') is null

    drop table Class

    Go

    Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int)

    Insert Class

    select N'张三',N'语文',78 union all

    select N'张三',N'数学',87 union all

    select N'张三',N'英语',82 union all

    select N'张三',N'物理',90 union all

    select N'李四',N'语文',65 union all

    select N'李四',N'数学',77 union all

    select N'李四',N'英语',65 union all

    select N'李四',N'物理',85

    GO

    DECLARE @Sql NVARCHAR(max)

    SET @Sql=(SELECT ',[Col'+RTRIM(ROW_NUMBER()OVER(ORDER BY RAND()))+']='''+[Student]+'''' FROM dbo.Class FOR XML PATH(''))

    SET @Sql=STUFF(@Sql,1,1,'SELECT ')+STUFF((SELECT ',[Col1]='''+[Course]+'''' FROM dbo.Class FOR XML PATH('')),1,1,' UNION ALL SELECT ')

    SET @Sql=@Sql+STUFF((SELECT ',[Col1]='''+RTRIM([Score])+'''' FROM dbo.Class FOR XML PATH('')),1,1,' UNION ALL SELECT ')

    EXEC(@Sql)

    /*

    Col1Col2Col3Col4Col5Col6Col7Col8

    张三张三张三张三李四李四李四李四

    语文数学英语物理语文数学英语物理

    7887829065776585

    */

    其它方法

    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html?seed=562318242

    展开全文
  • C语言程序设计-编写程序,实现矩阵(3行3列)的转置(即行列互换
  • 行列互换工具毫秒级_V2.2.2行列转换
  • sql行列互换

    2012-11-20 17:15:32
    实现了 将表的行列互换,统计查询的时候或许能用到,这是一个经典的sql语句,面试中有可能也会遇到。可以学习一下。
  • orcale数据库 行列互换

    2018-09-07 16:23:29
    orcale数据库 行列互换orcale数据库 行列互换orcale数据库 行列互换
  • oracle_lhr_行列互换总结oracle_lhr_行列互换总结oracle_lhr_行列互换总结
  • 矩阵行列互换

    千次阅读 2021-01-05 17:31:45
    矩阵行列互换问题描述代码测试结果 问题描述 矩阵行列互换 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 示例1 : 输入: 1 2 3 4 5 6 7 8 9 输出: 1 4 7 2 5 8 3 6 9 代码 #include<iostream&...

    矩阵行列互换

    问题描述

    矩阵行列互换
    写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
    示例1 : 输入:
    1 2 3
    4 5 6
    7 8 9
    输出:
    1 4 7
    2 5 8
    3 6 9
    

    代码

    #include<iostream>
    #include<vector>
    #include<iomanip>
    using namespace std;
    
    //题号7:矩阵行列互换
    //写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
    
    //示例1 : 输入:
    //1 2 3
    //4 5 6
    //7 8 9
    
    //输出:
    //1 4 7
    //2 5 8
    //3 6 9
    
    int main()
    {
    	vector<vector<int>> vec;//相当于二维数组
    	int row, col;
    
    	cout << "请输入行、列的值(行列值相等):";
    	cin >> row >> col;
    	vec.resize(row);
    	for (int i = 0; i < row; i++)
    	{
    		vec[i].resize(col);
    	}
    	for (int i = 0; i < row; i++)
    	{
    		cout << "请输入第" << i << "行的值:";
    		for (int j = 0; j < col; j++)
    		{
    			int num;
    			cin >> num;
    			vec[i][j] = num;
    		}
    	}
    	cout << "行列互换后矩阵为:" << endl;
    	for (int i = 0; i < row; i++)
    	{
    		for (int j = 0; j < col; j++)
    		{
    			cout << setw(5) << vec[j][i];
    			
    		}
    		cout << endl;
    	}
    	return 0;
    
    }
    

    测试结果

    在这里插入图片描述

    展开全文
  • 关于oracle的查询结果的行列互换.docx sql经典
  • 题目1:将表tbltest1的行列互换 表结构: student kemu fenshu student1 语文 80 student1 数学 90 student1 英语 85 student2 语文 85 student2 数学 92 student面试的时候遇到的数据库SQL问题,没写过,然后研究...

    面试的时候遇到的数据库SQL问题,没写过,然后研究了一下,现将结果记录下来,方便以后查询。 题目1:将表tbltest1的行列互换 表结构: student kemu fenshu student1 语文 80 student1 数学 90 student1 英语 85 student2 语文 85 student2 数学 92 student

    面试的时候遇到的数据库SQL问题,没写过,然后研究了一下,现将结果记录下来,方便以后查询。

    题目1:将表tbltest1的行列互换

    表结构:

    student kemu fenshu

    student1 语文 80

    student1 数学 90

    student1 英语 85

    student2 语文 85

    student2 数学 92

    student2 英语 82

    变成:

    student 语文 数学 英语

    student1 80 90 85

    student2 85 92 82

    SQLserver的sql语句:

    declare @sql varchar(4000)

    set @sql = 'select student'

    select @sql = @sql + ',sum(case kemu when '''+ kemu +''' then fenshu else 0 end)['+ kemu+']'

    from (select distinct kemu from tbltest1) as a

    set @sql = @sql + ' from tbltest1 group by student'

    exec(@sql)

    或者

    select student,sum(case kemu when '语文' then fenshu else 0 end) 语文,sum(case kemu when '数学' then fenshu else 0 end) 数学,sum(case kemu when '英语' then fenshu else 0 end) 英语 from tbltest group by student

    注:个人觉得上面的好。如果一两个选项可以使用下面的sql,如果选项多上面的sql就显的方便的多。

    2005的话好像还有个函数可以用,等研究好了再发上来。

    题目2:合并

    表结构tbltest2:

    id strings

    1 my

    1 name

    1 is

    1 xudayu

    2 hello

    2 world

    转化成:

    id strings

    1 my name is xudayu

    2 hello world

    SQLServer的sql语句:

    --创建一个合并的函数

    create function fliehebin(@id int)

    returns varchar(5000)

    as

    begin

    declare @str varchar(5000)

    set @str=''

    select @str=@str + cast(strings as varchar(50)) +' ' from tbltest2 where id=@id

    set @str=subString(@str,1,len(@str))

    return(@str)

    end

    go

    --调用自定义函数得到结果

    select distinct id,dbo.fliehebin(id) from tbltest2

    =====================================================================

    传说通用的, 如下:

    IF EXISTS( select * from sysobjects where xtype='U'and name ='data2' )

    Begin

    Drop table data2

    End

    CREATE TABLE [data2] (

    [人员编号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,

    [基本工资] [numeric](18, 2) NULL ,

    [奖金] [numeric](18, 2) NULL ,

    [合计] [numeric](19, 2) NULL ,

    CONSTRAINT [PK_data2] PRIMARY KEY CLUSTERED

    (

    [人员编号]

    ) ON [PRIMARY]

    ) ON [PRIMARY]

    GO

    insert data2 select 'a1',1.00,11.00,111.00

    insert data2 select 'a2',2.00,22.00,222.00

    insert data2 select 'a3',3.00,33.00,333.00

    insert data2 select 'a100',100.00,100.00,100.00

    go

    drop PROCEDURE AVB_IniTable

    go

    /*

    author:nyb

    time :2005/04/22

    fixtime :

    aim :转置行和列

    input :@TableNane

    执行:

    EXECUTE AVB_IniTable 'data2'

    */

    Create PROCEDURE AVB_IniTable

    @TableNane varchar(128)

    AS

    DECLARE @string VARCHAR(8000)

    --1 创建View

    IF EXISTS( select * from sysobjects where xtype='V'and name ='V_Temp' )

    Begin

    Drop view V_Temp

    End

    SELECT @string = ' Create view V_Temp as select * from ' + @TableNane

    EXECUTE (@string)

    IF EXISTS( select * from sysobjects where xtype='U'and name ='zzTemp' )

    Begin

    Drop table zzTemp

    End

    DECLARE @ColumnName VARCHAR(200)

    DECLARE @ColumnStr VARCHAR(5000)

    select @ColumnStr= ''

    select @ColumnStr=@ColumnStr + quotename(rtrim(人员编号)) +'float NULL,' from V_Temp

    print @ColumnStr

    SET @ColumnStr = left(@ColumnStr,len(@ColumnStr)-1)

    SELECT @string = 'CREATE TABLE zzTemp (列名 varchar(50) NULL,' + @ColumnStr + ') ON [PRIMARY]'

    print @string

    EXECUTE (@string)

    --2插入记录

    DECLARE Column_cur SCROLL CURSOR FOR

    SELECT name FROM syscolumns WHERE ID=object_id(@TableNane) and name <>'人员编号'

    OPEN Column_cur

    FETCH FIRST FROM Column_cur into @ColumnName

    WHILE (@@fetch_status<>-1)

    BEGIN

    select @ColumnStr= ''

    if @ColumnName = '基本工资'

    select @ColumnStr= @ColumnStr + '''' + convert(varchar(20),ISNULL(基本工资,0)) + ''',' from V_Temp

    else if @ColumnName = '奖金'

    select @ColumnStr= @ColumnStr + '''' + convert(varchar(20),ISNULL(奖金,0)) + ''',' from V_Temp

    else if @ColumnName = '合计'

    select @ColumnStr= @ColumnStr + '''' + convert(varchar(20),ISNULL(合计,0)) + ''',' from V_Temp

    SET @ColumnStr = left(@ColumnStr,len(@ColumnStr)-1)

    select @string = 'insert into zzTemp values(''' + @ColumnName + ''',' + @ColumnStr +')'

    execute(@string)

    FETCH NEXT FROM Column_cur into @ColumnName

    END

    CLOSE Column_cur

    DEALLOCATE Column_cur

    go

    --察看结果

    select * from data2

    select * from zzTemp

    =====================================================================

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_zj]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

    drop procedure [dbo].[p_zj]

    GO

    /*--行列互换的通用存储过程

    将指定的表,按指定的字段进行行列互换

    --邹建 2004.04--*/

    /*--使用示例

    --测试数据

    create table 表(类别 varchar(10),男性 decimal(20,1),女性 decimal(20,1))

    insert 表 select '小说',38.0,59.2

    union all select '散文',18.9,30.6

    union all select '哲学',16.2,10.2

    /*--要求转换结果

    性别 小说 散文 哲学

    ---- ----- ----- -----

    男性 38.0 18.9 16.2

    女性 59.2 30.6 10.2

    (所影响的行数为 2 行)

    --*/

    --调用存储过程

    exec p_zj '表','类别','性别'

    --删除测试

    drop table 表

    --*/

    create proc p_zj

    @tbname sysname, --要处理的表名

    @fdname sysname, --做为转换的列名

    @new_fdname sysname='' --为转换后的列指定列名

    as

    declare @s1 varchar(8000),@s2 varchar(8000)

    ,@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)

    ,@i varchar(10)

    select @s1='',@s2='',@s3='',@s4='',@s5='',@i='0'

    select @s1=@s1+',@'+@i+' varchar(8000)'

    ,@s2=@s2+',@'+@i+'='''+case isnull(@new_fdname,'') when '' then ''

    else @new_fdname+'=' end+''''''+name+''''''''

    ,@s3=@s3+'

    select @'+@i+'=@'+@i+'+'',[''+cast(['+@fdname+'] as varchar)+'']=''''''+replace(['+name+'],'''','''''''')+'''''''' from ['+@tbname+']'

    ,@s4=@s4+',@'+@i+'=''select ''+@'+@i

    ,@s5=@s5+'+'' union all ''+@'+@i

    ,@i=cast(@i as int)+1

    from syscolumns

    where object_id(@tbname)=id and name<>@fdname

    order by colid

    select @s1=substring(@s1,2,8000)

    ,@s2=substring(@s2,2,8000)

    ,@s4=substring(@s4,2,8000)

    ,@s5=substring(@s5,16,8000)

    exec('declare '+@s1+'

    select '+@s2+@s3+'

    select '+@s4+'

    exec('+@s5+')')

    go

    Oracle's:

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 代码需求:对等行等列的二维数组进行 行列 的互换分析过程主对角线是保持不变行列互换即角标互换:[0][1] => [1][0]循环次数:外层循环行,内层循环每一行的列示意图代码实现public class ArrayReverse {public ...
  • python 行列互换

    千次阅读 2020-04-11 12:31:06
    python 行列互换 #!/usr/bin/env python #coding=utf-8 ''' 表头信息 0 1 2 3 4 5 6 7 8 9 10 名字显示 标题 日期 厂区 班别 客户 每人工时 总工时 审批人 备注 工时确认 ''' imp...
  • 将一个二维数组的行和列元素互换,存放到另一个二维数组中。 输入要求 第一行输入两个整数m和n分别表示二维数组的行数和列数(均不超过20)。 下一行输入该二维数组的各个元素值。 输出要求 输出行列...
  • 我是头条号职场加油驿站,我又来和大家分享EXCEL办公小技能了~今天和大家分享如何1秒搞定EXCEL表格行列内容互换,快来和我一起学习吧问题:经常处理数据表格的人会遇到这种问题,有时候表格列数太多,或者行数太多,...
  • C++简单行列互换

    2021-07-20 10:10:57
    #include using namespace std; int main() { cout请输入一个三行四列的数组"<>a[i][j]; } }; //非常简单哈,只需要你把这个行列互换一下就行 for(int i=0;i;i++) { for(int j=0;j;j++) { cout
  • 指针:行列互换

    2021-07-14 20:03:01
    写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入要求:一个3x3的矩阵‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪...
  • 堆积柱形图根据原始数据表格做出后,使用者可以根据用户需求对原始表格行列互换,从而改变柱形图所要传达的内容信息,从而满足用户的不同工作需求。工具/原料EXCEL方法/步骤如下图,图表的横坐标为[一组][二组]和[三...
  • 矩阵的行列互换

    2022-03-15 20:16:07
    可使用嵌套列表进行矩阵列表的行列互换。 例如: matrix = [ … [1, 2, 3, 4], … [5, 6, 7, 8], … [9, 10, 11, 12], … ] [[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10], [3, 7,...
  • 文章目录1、行转列2、列转行3、行列互换 我最近在做一个Java web项目,其中某个模块设计需要展示数据表格和图标,如图, 而数据库中数据存在2张表中(数据版本为oracle 11g): 表1 存储的配置表 ,图示: 表2...
  • 以李宏毅2020年作业1 Train数据做实验 导入数据 stack() 将第一行转为列 3. 将行列互换 unstack(1) 将表格还原
  • 矩阵行列互换算法-二维数组

    千次阅读 2021-06-01 10:21:20
    矩阵行列互换算法的实例要从一个简单的例子来归纳 [1,2,3] [4,5,6] [7,8,9] ——由———到—————》 [1,4,7] [2,5,8] [3,6,9] 由上面的单行到下面的单行,用矩阵行列互换算法来完成,关键是将索引交换后进行交换...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,816
精华内容 3,126
关键字:

行列互换