• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    交叉表查询sql语句
    表一:   
      组名   
      成员1id   
      成员2id   
      成员3id   

      示例数据:   
      冲锋组     1       2       3   
      后卫组     2       3       4   

      表二:   
      成员id   
      成员姓名   

      示例数据:   
      1     张三   
      2     李四   
      3     王五   
      4     陆二   

      要求结果     

      冲锋组     张三       李四       王五   
      后卫组     李四       王五       陆二  
    复制代码 代码如下:

    --建立测试环境   
      Create   Table   表1(组名   varchar(10),成员1id   varchar(10),成员2id   varchar(10),成员3id   varchar(10))   
      --插入数据   
      insert   into   表1   
      select   '冲锋组','1','2','3'   union   
      select   '后卫组','2','3','4'     
        Create   Table   表2(成员id   varchar(10),成员姓名   varchar(10))   
      --插入数据   
      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   

          
      --删除测试环境   
      Drop   Table   表1   
      Drop   Table   表2   

      /*   
      组名                   成员1                 成员1                 成员1                   
      ----------   ----------   ----------   ----------     
      冲锋组                 张三                   李四                   王五   
      后卫组                 李四                   王五                   陆二   

      (所影响的行数为   2   行)   
      */

    复制代码 代码如下:

    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.组名

    复制代码 代码如下:

    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.组名

    复制代码 代码如下:

    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   

    复制代码 代码如下:

    正解是   
      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
    上一篇:一个查询的SQL语句请教,希望能够用一条SQL语句得到结果
    下一篇:ms SQL server数据库备份、压缩与SQL数据库数据处理的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    交叉表查询sql语句 交叉表,查询,sql,语句,交叉表,