精华内容
下载资源
问答
  • 我们在上篇文章中介绍了怎么用 SQL 打印 5 x 5 矩阵,今天内容仍旧围绕这个主题,只不过规则稍有点不同。先来看看要实现效果。和前面篇文章中表格不同之处在于:偶数行排序不再是从左到右是递增,...

    6cd716353e4cbafa0c79f9be58b70ae3.png

    我们在上一篇文章中介绍了怎么用 SQL 打印 5 x 5 的矩阵,今天的内容仍旧围绕这个主题,只不过规则稍有点不同。

    先来看看要实现的效果。

    04b57d25f3b91d5e114215246085586f.png

    和前面一篇文章中的表格不同之处在于:偶数行的排序不再是从左到右是递增的,而是递减,或者说是从右到左递增。

    完整的规则:

    1. 有一张 5 x 5 的表格,我们要往这张表格中填充 1~25 的数字;
    2. 如果是奇数行,则从左到右填充数字;如果是偶数行,就需要按从右到左的顺序填入数字。
    3. 先从表格的左上角(即第一行第一列)填入数字 “1”,在第一行第二列填入“2”,直到把第一行填满;
    4. 当上一行填满的时候,就开始往下一行填数据。比如,第二行要从右往左依次填入“6”、“7”、“8”、“9”、“10”。
    5. 循环反复,直到所有空格都填满数字。

    接下来,我们将实现这个需求。

    第一步,生成 1~25 的数。

    WITH recursive t_seq (num) AS 
    (SELECT 
      1 AS num 
    UNION ALL 
    SELECT 
      num + 1 AS num 
    FROM
      t_seq 
    WHERE num < 25)
    
    SELECT * FROM t_seq

    第二步,生成每个数对应的组号/行号。

    x0 AS 
    (SELECT 
      num,
      CEIL(num / 5) AS group_no 
    FROM
      t_seq)
    
    SELECT * FROM x0

    第三步,动态排序。

    若是奇数行,则组内默认按升序排序,反之,则是降序排序。

    使用 IF(是偶数行, - 1 * 原排序字段, 原排序字段) AS 新排序字段 可以达到依据条件实现动态排序的效果。

    x1 AS 
    (SELECT 
      *,
      IF(group_no % 2 = 0, - 1 * num, num) AS ordered,
      row_number () over () AS seq 
    FROM
      x0 
    ORDER BY group_no,
      ordered)
    
    SELECT * FROM x1

    注意,我们在 SQL 中加入了一个新字段 seq,seq 存储的是 1~25 的自然数,它将作为后面步骤的行转列的依据。

    执行上面的 SQL ,部分结果如下。

    num  group_no  ordered     seq  
    ------  --------  -------  --------
         1  1               1         1
         2  1               2         2
         3  1               3         3
         4  1               4         4
         5  1               5         5
        10  2             -10         6
         9  2              -9         7
         8  2              -8         8
         7  2              -7         9
         6  2              -6        10

    第四步,行转列。

    x2 AS 
    (SELECT 
      group_no AS row_no,
      MAX(IF(seq % 5 = 1, num, NULL)) AS A,
      MAX(IF(seq % 5 = 2, num, NULL)) AS B,
      MAX(IF(seq % 5 = 3, num, NULL)) AS C,
      MAX(IF(seq % 5 = 4, num, NULL)) AS D,
      MAX(IF(seq % 5 = 0, num, NULL)) AS E 
    FROM
      x1 
    GROUP BY group_no) 
    
    SELECT 
      A, B, C, D, E 
    FROM
      x2

    最终的实现效果>>>

    A       B       C       D       E  
    ------  ------  ------  ------  --------
         1       2       3       4         5
        10       9       8       7         6
        11      12      13      14        15
        20      19      18      17        16
        21      22      23      24        25
    展开全文
  • excel怎么不同内容中间插入行?

    千次阅读 2018-06-19 11:05:05
    ,1)然后拖动填充钮向下填充到最后行然后选中F,按F5,定位条件,公式,在公式下仅选中数字,确定,此时F列的1就已经被选中了,在任何个已经选定数字上右键-插入-整行,确定就可以了。...
    如果你是指要在A、B、C三者之前分段用空行格开的话,方法很多,比如说,假定你的数据都从A1开始,ABCD这些都在A列,在后面找个空列,比如F列,在F2处填入
    =IF(A2=A1,"",1)
    然后拖动填充钮向下填充到最后一行
    然后选中F列,按F5,定位条件,公式,在公式下仅选中数字,确定,此时F列的1就已经被选中了,在任何一个已经选定的数字上右键-插入-整行,确定就可以了。
    展开全文
  • 我们在上篇文章中介绍了怎么用 SQL 打印 5 x 5 矩阵,今天内容仍旧围绕这个主题,只不过规则稍有点不同。先来看看要实现效果。和前面篇文章中表格不同之处在于:偶数行排序不再是从左到右是递增,...

    a040ed56137ea548f5947f5c992c6598.png

    我们在上一篇文章中介绍了怎么用 SQL 打印 5 x 5 的矩阵,今天的内容仍旧围绕这个主题,只不过规则稍有点不同。

    先来看看要实现的效果。

    7569932a64d85e5e7f91c8c3b98a4c5c.png

    和前面一篇文章中的表格不同之处在于:偶数行的排序不再是从左到右是递增的,而是递减,或者说是从右到左递增。

    完整的规则:

    1. 有一张 5 x 5 的表格,我们要往这张表格中填充 1~25 的数字;
    2. 如果是奇数行,则从左到右填充数字;如果是偶数行,就需要按从右到左的顺序填入数字。
    3. 先从表格的左上角(即第一行第一列)填入数字 “1”,在第一行第二列填入“2”,直到把第一行填满;
    4. 当上一行填满的时候,就开始往下一行填数据。比如,第二行要从右往左依次填入“6”、“7”、“8”、“9”、“10”。
    5. 循环反复,直到所有空格都填满数字。

    接下来,我们将实现这个需求。

    第一步,生成 1~25 的数。

    WITH recursive t_seq (num) AS 
    (SELECT 
      1 AS num 
    UNION ALL 
    SELECT 
      num + 1 AS num 
    FROM
      t_seq 
    WHERE num < 25)
    
    SELECT * FROM t_seq

    第二步,生成每个数对应的组号/行号。

    x0 AS 
    (SELECT 
      num,
      CEIL(num / 5) AS group_no 
    FROM
      t_seq)
    
    SELECT * FROM x0

    第三步,动态排序。

    若是奇数行,则组内默认按升序排序,反之,则是降序排序。

    使用 IF(是偶数行, - 1 * 原排序字段, 原排序字段) AS 新排序字段 可以达到依据条件实现动态排序的效果。

    x1 AS 
    (SELECT 
      *,
      IF(group_no % 2 = 0, - 1 * num, num) AS ordered,
      row_number () over () AS seq 
    FROM
      x0 
    ORDER BY group_no,
      ordered)
    
    SELECT * FROM x1

    注意,我们在 SQL 中加入了一个新字段 seq,seq 存储的是 1~25 的自然数,它将作为后面步骤的行转列的依据。

    执行上面的 SQL ,部分结果如下。

    num  group_no  ordered     seq  
    ------  --------  -------  --------
         1  1               1         1
         2  1               2         2
         3  1               3         3
         4  1               4         4
         5  1               5         5
        10  2             -10         6
         9  2              -9         7
         8  2              -8         8
         7  2              -7         9
         6  2              -6        10

    第四步,行转列。

    x2 AS 
    (SELECT 
      group_no AS row_no,
      MAX(IF(seq % 5 = 1, num, NULL)) AS A,
      MAX(IF(seq % 5 = 2, num, NULL)) AS B,
      MAX(IF(seq % 5 = 3, num, NULL)) AS C,
      MAX(IF(seq % 5 = 4, num, NULL)) AS D,
      MAX(IF(seq % 5 = 0, num, NULL)) AS E 
    FROM
      x1 
    GROUP BY group_no) 
    
    SELECT 
      A, B, C, D, E 
    FROM
      x2

    最终的实现效果>>>

    A       B       C       D       E  
    ------  ------  ------  ------  --------
         1       2       3       4         5
        10       9       8       7         6
        11      12      13      14        15
        20      19      18      17        16
        21      22      23      24        25
    展开全文
  • excel使用

    2012-11-25 17:06:01
    下面给出一个例子:选中一列,然后单击“格式”菜单中“单元格”命令,在弹出对话框中选择“数字”选项卡,在“分类”列表中选择“自定义”,然后在“类型”文本框中输入“"正数:"($#,##0.00);"负数:"($ #,##...
  • 11.6.2 使用不同的域分隔符 116 11.6.3 paste命令管道输入 117 11.7 split用法 117 11.8 小结 118 第12章 tr用法 119 12.1 关于tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 ...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.15 我要检查是不是在另外两个之间,为什么if(abc)不行? 3.16 为什么如下代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...
  • 怎么样设置才能让这一列的每个单元格只能输入12位 如何让工作表奇数行背景是红色偶数行背景是蓝色 计算特定一组单元格中,满足条件单元格个数 把文本格式数字转换成真正数字 设置页码 Excel表格里如何插入...
  • 3.15 我要检查是不是在另外两个之间,为什么if(a )不行? 69 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 69 3.17 为什么下面代码总是给出0?double degC, degF; degC= 5.0 / 9...
  • 3.15 我要检查是不是在另外两个之间,为什么if(a )不行? 69 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 69 3.17 为什么下面代码总是给出0?double degC, degF; degC= 5.0 / 9...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.15 我要检查是不是在另外两个之间,为什么if(a b c)不行? 40 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面代码总是给出0?double degC, degF; degC= ...
  • 3.15 我要检查是不是在另外两个之间,为什么if(a b c)不行? 40 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面代码总是给出0?double degC, degF; degC= ...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    怎么样设置才能让这一列的每个单元格只能输入12位 如何让工作表奇数行背景是红色偶数行背景是蓝色 计算特定一组单元格中,满足条件单元格个数 把文本格式数字转换成真正数字 设置页码 Excel表格里如何插入...
  • 3.15 我要检查是不是在另外两个之间,为什么if(abc)不行?  3.16 为什么如下代码不对?inta=1000,b=1000;longintc=a*b;  3.17 为什么下面代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32);  ...
  •  3.15 我要检查是不是在另外两个之间,为什么if(abc)不行? 3.16 为什么如下代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...
  • 代码量达到了 14000 行,同时为此应用而写作的多个开源库的数千行代码并没有被计入。 此后项目经历了大型的重构,以适应代码复用和支持屏幕旋转的需求。在此之后,我得以实现了个较为美观的个人资料页,并且对...
  • 3.15 我要检查是不是在另外两个之间,为什么if(a b c)不行? 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面代码总是给出0?double degC, degF; degC= 5.0 / 9 * ...
  •  3.15 我要检查是不是在另外两个之间,为什么if(a b c)不行?  3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b;  3.17 为什么下面代码总是给出0?double degC, degF; degC= 5.0 /...
  • 3.15 我要检查是不是在另外两个之间,为什么if(a b c)不行? 3.16 为什么如下代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面代码总是给出0?double degC, degF; degC= 5.0 / 9 * ...
  • 你必须知道495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    不同编译器给出不同的结果, 有的为 3, 有的为4, 哪个是正确的? . . . . . . . . . . . . . . . . . . . . . 14 3.4 这是个巧妙的表达式: a ˆ= b ˆ= a ˆ= b 它不需要临时变量就可 以交换a 和b 的值。. . . . . ....
  • 方法是不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则 进入主窗口,如果有错则弹出警告对话框。 实现原理: 通过上节的多窗口...
  • 4.7.5 把分区移动到不同的表 161 4.7.6 移除分区函数和分区方案 162 4.7.7 用文件组提高VLDB的可管理性 162 4.7.8 用数据压缩减少磁盘空间使用 164 第5章 索引 167 5.1 索引预览 167 5.1.1 创建表索引 ...
  • 11.6.2 使用不同的域分隔符 116 11.6.3 paste命令管道输入 117 11.7 split用法 117 11.8 小结 118 第12章 tr用法 119 12.1 关于tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 ...
  • 11.6.2 使用不同的域分隔符 116 11.6.3 paste命令管道输入 117 11.7 split用法 117 11.8 小结 118 第12章 tr用法 119 12.1 关于tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 ...

空空如也

空空如也

1 2 3 4 5
收藏数 89
精华内容 35
关键字:

怎么填充一列不同的数