溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何實現(xiàn)用sql語句查詢交叉表

發(fā)布時間:2021-09-24 11:38:05 來源:億速云 閱讀:140 作者:iii 欄目:數(shù)據(jù)庫

本篇內(nèi)容介紹了“如何實現(xiàn)用sql語句查詢交叉表”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

表一:   
  組名   
  成員1id   
  成員2id   
  成員3id   

  示例數(shù)據(jù):   
  沖鋒組     1       2       3   
  后衛(wèi)組     2       3       4   

  表二:   
  成員id   
  成員姓名   

  示例數(shù)據(jù):   
  1     張三   
  2     李四   
  3     王五   
  4     陸二   

  要求結(jié)果     

  沖鋒組     張三       李四       王五   
  后衛(wèi)組     李四       王五       陸二  

復(fù)制代碼 代碼如下:


--建立測試環(huán)境   
  Create   Table   表1(組名   varchar(10),成員1id   varchar(10),成員2id   varchar(10),成員3id   varchar(10))   
  --插入數(shù)據(jù)   
  insert   into   表1   
  select   '沖鋒組','1','2','3'   union   
  select   '后衛(wèi)組','2','3','4'     
    Create   Table   表2(成員id   varchar(10),成員姓名   varchar(10))   
  --插入數(shù)據(jù)   
  insert   into   表2   
  select   '1','張三'   union   
  select   '2','李四'   union   
  select   '3','王五'   union   
  select   '4','陸二'     

  --測試語句   
    select   a.組名,   
  成員1=(select   成員姓名   from   表2   b   where   a.成員1id=b.成員id),   
  成員1=(select   成員姓名   from   表2   b   where   a.成員2id=b.成員id),   
  成員1=(select   成員姓名   from   表2   b   where   a.成員3id=b.成員id)   
  from   表1   a   

      
  --刪除測試環(huán)境   
  Drop   Table   表1   
  Drop   Table   表2   

  /*   
  組名                   成員1                 成員1                 成員1                   
  ----------   ----------   ----------   ----------     
  沖鋒組                 張三                   李四                   王五   
  后衛(wèi)組                 李四                   王五                   陸二   

  (所影響的行數(shù)為   2   行)   
  */

復(fù)制代碼 代碼如下:


select     
          a.組名,   
          成員1   =   max(case   b.成員id   =   a.成員1id   then   b.成員姓名   end),   
          成員2   =   max(case   b.成員id   =   a.成員2id   then   b.成員姓名   end),   
          成員3   =   max(case   b.成員id   =   a.成員3id   then   b.成員姓名   end),   
  from     
          表一   a,   
          表二   b   
  group   by   
          a.組名

復(fù)制代碼 代碼如下:


select     
          a.組名,   
          成員1   =   max(case   b.成員id   =   a.成員1id   then   b.成員姓名   end),   
          成員2   =   max(case   b.成員id   =   a.成員2id   then   b.成員姓名   end),   
          成員3   =   max(case   b.成員id   =   a.成員3id   then   b.成員姓名   end)   
  from     
          表一   a,   
          表二   b   
  group   by   
          a.組名

復(fù)制代碼 代碼如下:


select   a.組名,   
                成員1=(select   成員姓名   from   表2   b   where   a.成員1id=b.成員id),   
                成員1=(select   成員姓名   from   表2   b   where   a.成員2id=b.成員id),   
                成員1=(select   成員姓名   from   表2   b   where   a.成員3id=b.成員id)   
  from   表一   a   

復(fù)制代碼 代碼如下:


正解是   
  select   表1.組名,   
                (select   表1.成員姓名   from   表2   b   where   表1.成員1id=表2.成員id)   as   成員1id,   
                (select   表1.成員姓名   from   表2   b   where   表1.成員2id=表2.成員id)   as   成員2id,   
                (select   表1.成員姓名   from   表2   b   where   表1.成員3id=表2.成員id)   as   成員3id   
  from   表1,表2

“如何實現(xiàn)用sql語句查詢交叉表”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI