求助! 这个sql语句怎么写?

gag888 2018-11-18 11:29:38
求助! 这个sql语句怎么写?如下图






需要实现 不同的uid 下面的xianlu内容相同 以pbqd 字段里用,分割的 字符串重复 反之 不列出!
...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gag888 2018-11-21
  • 打赏
  • 举报
回复
五楼 按照你说的 最后 pbqd 这个字段里的 1,2 和3,4 应该条件是不成功 也是被查询出来







一半乐事 2018-11-21
  • 打赏
  • 举报
回复
一种思路: select * from zd_base a inner join zd_base b on a.xianlu=b.xianlu and a.uid!=b.uid 这样两个pbqd就在一行里了 再用substring把pbqd按逗号分成多列 然后查询用where条件排列组合pbqd,如where a.pbqd1=b.pbqd1 or a.pbqd1=b.pbqd2 or a.pbqd2=b.pbqd1........
gag888 2018-11-21
  • 打赏
  • 举报
回复
我的意思是这样 我用

SELECT * FROM zd_base where `pbqd` in (SELECT `pbqd` FROM zd_base GROUP BY `pbqd` HAVING COUNT(`pbqd`)>1)

得出的结果是



但是我一改成这样



语句就不成立了 得到结果就为空了



  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
不要用截图, 用文本贴出你的测试表、测试数据(有脚本更好), 还有你期望的结果。
WITH cte1 AS ( SELECT 1 uid,'C1' xianlu,'寰宇机械厂站,西直门站,' pbqd UNION ALL SELECT 2 uid,'C1' xianlu,'寰宇机械厂站,北京站,' pbqd UNION ALL SELECT 3 uid,'C1' xianlu,'苏州街站,望京站,' pbqd UNION ALL SELECT 3 uid,'C2' xianlu,'苏州街站,望京站,' pbqd ), cte2 AS ( SELECT cte1.uid,pbqd,xianlu,CHARINDEX(',',cte1.pbqd) STA,CHARINDEX(',',cte1.pbqd)-1 LENS FROM cte1 UNION ALL SELECT uid,pbqd,xianlu,CHARINDEX(',',pbqd,STA+1) STA,CHARINDEX(',',pbqd,STA+1)-STA-1 LENS FROM cte2 WHERE STA<>0 ), cte3 AS ( SELECT uid,xianlu,SUBSTRING(cte2.pbqd,STA-LENS,LENS) as pbqdnew,pbqd FROM cte2 WHERE STA<>0 ) --SELECT * FROM testtb2 SELECT DISTINCT cte3A.* FROM cte3 cte3A INNER JOIN cte3 cte3B ON cte3A.uid<>cte3B.uid AND cte3B.xianlu = cte3A.xianlu AND cte3B.pbqdnew = cte3A.pbqdnew 他应该大致是这个意思
吉普赛的歌 版主 2018-11-19
  • 打赏
  • 举报
回复
不要用截图, 用文本贴出你的测试表、测试数据(有脚本更好), 还有你期望的结果。
gag888 2018-11-19
  • 打赏
  • 举报
回复
没有知道的吗

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧