点点滴滴的博客 2021-06-03 10:14 采纳率: 25%
浏览 49
已采纳

用sql写 一张表中有A,B,C三个字段,对比B字段中内容是否包含A,如包含输出同行C字段?

例如  表为部门表 department 其中包含公司名称,一级部门名称,二级部门名称,三级部门名称
字段A         字段 B                字段 C
id               pulldi                name
abc              abc                无敌集团
abc             abc-01             综管部
abc             abc-01-01        信息部
abd             abd                上帝集团
abd             abd-01              综管部

对比   字段B 内是否包含 A  如果包含 输出同行C (此张部门表已于其他表进行关联,已在输出部门中使用了department.name,
    u.realName AS 姓名,
    u.userName AS 登陆账号,
    u.id AS 账号ID,
       department.name AS 部门,
    department.name AS 公司,
小白也不知道 如何处理怎么在公司列再次使用name
 )

  • 写回答

5条回答 默认 最新

  • CSDN专家-文盲老顾 2021-06-03 10:25
    关注
    with t as (
    	select 'abc' as id,'abc' as pulldi,'wtf' as name
    	union all select 'abc','abc-01','dpt1'
    	union all select 'abc','abc-01-01','dpt1-1'
    
    ) 
    select * from t a
    left join t b on CHARINDEX(a.id,b.pulldi)>0 and a.id<b.pulldi
    where not exists(select top 1 1 from t where CHARINDEX(pulldi,a.pulldi)>0 and pulldi<>a.pulldi)
    

    感觉你描述的逻辑有点问题,应该是对比pulldi列,如果存在包含关系则输出,否则本行不输出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程