成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

將一列中多行相同的值只顯示在一行

數(shù)據(jù)庫(kù) SQL Server
簡(jiǎn)單說下我的實(shí)現(xiàn)思路: 1.按id、name排序給原始數(shù)據(jù)生成行號(hào) 2.用遞歸判斷上下行的id是否相等,第一次出現(xiàn)計(jì)數(shù)器初始值為1,后面再出現(xiàn)則計(jì)數(shù)器+1 3.對(duì)步驟2中生成的結(jié)果集再處理,計(jì)數(shù)器為1的id不變,計(jì)數(shù)器大于1則id為空字符串

   數(shù)據(jù)庫(kù)環(huán)境:SQL SERVER 2008R2

  需求如題,左圖為初始數(shù)據(jù),右圖是已實(shí)現(xiàn)需求的數(shù)據(jù)展示

 

  簡(jiǎn)單說下我的實(shí)現(xiàn)思路

  1.按id、name排序給原始數(shù)據(jù)生成行號(hào)

  2.用遞歸判斷上下行的id是否相等,***次出現(xiàn)計(jì)數(shù)器初始值為1,后面再出現(xiàn)則計(jì)數(shù)器+1

  3.對(duì)步驟2中生成的結(jié)果集再處理,計(jì)數(shù)器為1的id不變,計(jì)數(shù)器大于1則id為空字符串

  我把實(shí)現(xiàn)的代碼貼出來

 

  1. /*準(zhǔn)備基礎(chǔ)數(shù)據(jù)*/ 
  2. WITH    x0 
  3.           AS ( SELECT   1 AS id , 
  4.                         'a' AS NAME 
  5.                UNION ALL 
  6.                SELECT   1 AS id , 
  7.                         'b' AS NAME 
  8.                UNION ALL 
  9.                SELECT   1 AS id , 
  10.                         'c' AS NAME 
  11.                UNION ALL 
  12.                SELECT   2 AS id , 
  13.                         'e' AS NAME 
  14.                UNION ALL 
  15.                SELECT   2 AS id , 
  16.                         'd' AS NAME 
  17.                UNION ALL 
  18.                SELECT   3 AS id , 
  19.                         'f' AS NAME 
  20.                UNION ALL 
  21.                SELECT   4 AS id , 
  22.                         'h' AS NAME 
  23.                UNION ALL 
  24.                SELECT   4 AS id , 
  25.                         'j' AS NAME 
  26.              ),/*按id、name排序生成行號(hào)*/ 
  27.         x1 
  28.           AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY id, name ) AS tid , 
  29.                         CAST(id AS VARCHAR(2)) id , 
  30.                         name 
  31.                FROM     x0 
  32.              ),/*遞歸設(shè)置計(jì)數(shù)器*/ 
  33.         x2 ( tid, id, namelevel ) 
  34.           AS ( SELECT   tid , 
  35.                         id , 
  36.                         name , 
  37. AS level 
  38.                FROM     x1 
  39.                WHERE    tid = 1 
  40.                UNION ALL 
  41.                SELECT   t1.tid , 
  42.                         t1.id , 
  43.                         t1.NAME , 
  44.                         CASE WHEN t1.id = t2.id THEN level + 1 
  45.                              ELSE 1 
  46.                         END level 
  47.                FROM     x1 t1 
  48.                         INNER JOIN x2 t2 ON t1.tid = t2.tid + 1 
  49.              ) 
  50.     /*計(jì)數(shù)器為1則id不動(dòng),否則置為空字符串*/ 
  51.     SELECT  CASE WHEN level = 1 THEN id 
  52.                  ELSE '' 
  53.             END id , 
  54.             name 
  55.     FROM    x2 

 

  先比我的實(shí)現(xiàn),有一網(wǎng)友提供了更簡(jiǎn)單的實(shí)現(xiàn)方式

  我們來看一下他是怎么實(shí)現(xiàn)的 

  1. WITH    x0 
  2.           AS ( SELECT   1 AS id , 
  3.                         'a' AS NAME 
  4.                UNION ALL 
  5.                SELECT   1 AS id , 
  6.                         'b' AS NAME 
  7.                UNION ALL 
  8.                SELECT   1 AS id , 
  9.                         'c' AS NAME 
  10.                UNION ALL 
  11.                SELECT   2 AS id , 
  12.                         'e' AS NAME 
  13.                UNION ALL 
  14.                SELECT   2 AS id , 
  15.                         'd' AS NAME 
  16.                UNION ALL 
  17.                SELECT   3 AS id , 
  18.                         'f' AS NAME 
  19.                UNION ALL 
  20.                SELECT   4 AS id , 
  21.                         'h' AS NAME 
  22.                UNION ALL 
  23.                SELECT   4 AS id , 
  24.                         'j' AS NAME 
  25.                UNION ALL 
  26.                SELECT   1 AS id , 
  27.                         'j' AS NAME 
  28.              ) 
  29.     SELECT  REPLACE(CASE WHEN ROW_NUMBER() OVER ( PARTITION BY CAST(ID AS VARCHAR(2)) ORDER BY NAME ) <> '1' 
  30.                          THEN 0 
  31.                          ELSE CAST(ID AS VARCHAR(20)) 
  32.                     END, 0, ''AS ID , 
  33.             NAME 
  34.     FROM    x0 

 

實(shí)現(xiàn)的思路和我一樣,但他的方法比我的簡(jiǎn)單,也容易理解。

我相信,實(shí)現(xiàn)該需求的方法不局限于這2種,歡迎各位看官提出更多的解題方法。

(本文完)

責(zé)任編輯:honglu 來源: 博客園
相關(guān)推薦

2009-07-28 08:36:45

TemplateFie

2020-08-24 08:25:48

Python開發(fā)工具

2019-12-25 14:08:50

Pandas數(shù)據(jù)計(jì)算

2022-11-08 09:38:18

Linux命令行刪除文件

2016-12-02 08:53:18

Python一行代碼

2017-04-05 11:10:23

Javascript代碼前端

2021-01-21 15:44:03

vlookup函數(shù)數(shù)據(jù)區(qū)域Match函數(shù)

2010-10-27 13:16:41

oracle并行查詢

2011-08-25 09:17:31

Java調(diào)用存儲(chǔ)過程返回一行或多行結(jié)果集

2022-11-03 10:36:30

Linux隱藏文件

2021-11-02 16:25:41

Python代碼技巧

2010-09-10 13:37:59

SQLCOUNT()函數(shù)

2014-02-12 13:43:50

代碼并行任務(wù)

2022-04-09 09:11:33

Python

2018-01-30 08:47:46

存儲(chǔ)查詢性能

2020-08-12 14:54:00

Python代碼開發(fā)

2021-07-26 10:32:54

MySQL數(shù)據(jù)庫(kù)存儲(chǔ)

2022-09-25 00:07:18

Python圖形界面

2016-12-16 19:13:33

擴(kuò)展性數(shù)據(jù)庫(kù)

2021-10-19 17:52:16

Git命令算數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一区二区三区日 | av在线播放不卡 | 一二区成人影院电影网 | 欧美精品一区二区蜜桃 | 羞羞视频网站免费观看 | 亚洲精品日韩在线 | 国产精品久久久久久婷婷天堂 | 精品国产一区二区三区性色av | 精品国产一区久久 | 成人精品一区二区三区中文字幕 | 噜噜噜色网 | 国产成人午夜精品影院游乐网 | 亚洲一区二区在线播放 | 国产aa | 男女羞羞视频在线看 | 99热精品国产 | 99久久电影 | 国产成人精品久久 | 黄色毛片在线播放 | 99久久婷婷国产综合精品电影 | 国产精品激情在线 | www久久久 | 欧美成人一区二区三区片免费 | 99久久免费精品国产免费高清 | 国产在线观看一区二区 | 人人性人人性碰国产 | 国产在线一区二区三区 | 三级在线观看 | 黄色大全免费看 | 免费在线观看一区二区 | 91视频在线 | 五月天婷婷激情 | 中文字幕免费视频 | 中文字幕av网站 | 91国产精品 | 亚洲精品久久久久久国产精华液 | 国产精品美女久久久久aⅴ国产馆 | 欧美一级久久 | 午夜久久久久久久久久一区二区 | 国产福利在线免费观看 | 日本大香伊一区二区三区 |