用sql语句或者其他方法怎样实现下面的例子??

image.png首先某个学员必须报了带营字和一对一这两门课,其次一对一课程要大于等于176个课时,主要是怎样可以写出来这个学员必须报了这两门课?image.pngimage.png

18568453967 发布于 2019-2-26 10:48 (编辑于 2019-2-26 11:41)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
wzh5788Lv4中级互助
发布于2019-2-26 10:58(编辑于 2019-2-26 10:59)

mysql  用GROUP_CONCAT 然后判断字符串 like'营' 和'一对一' 的人 

再跟一对一课程大于176的 结果集取交集


sql server 怎么实现mysql中group_concat,列转行,列用分隔符拼接字符串

create table tb(id int, value varchar(10)) 
insert into tb values(1, 'aa') 
insert into tb values(1, 'bb') 
insert into tb values(2, 'aaa') 
insert into tb values(2, 'bbb') 
insert into tb values(2, 'ccc') 
go

SELECT * from tb;

select id, [value] = stuff((select ',' + [value] from tb t where id = tb.id for xml path('')) , 1 , 1 , '') 
from tb 
group by id



  • 18568453967 18568453967(提问者) 但是我的那个表没有唯一的id,具体怎样实现?有点不明白
    2019-02-26 11:03 
  • wzh5788 wzh5788 回复 18568453967(提问者) 人不是吗。
    2019-02-26 11:22 
  • 18568453967 18568453967(提问者) 回复 wzh5788 你看看我的字段,看看怎么写??
    2019-02-26 11:42 
最佳回答
0
我行我素Lv3初级互助
发布于2019-2-26 11:01

select [学员],sum(case when [产品名称] like '一对一'  and [数量]>=176 then 1 when [产品名称] like ''  then 1 else 0

end) as [符合预期课程数] 

from  table

  • 18568453967 18568453967(提问者) 你看我刚刚弄的对吗?我刚上传上去了
    2019-02-26 11:06 
  • 我行我素 我行我素 回复 18568453967(提问者) 额,我只是说样例,具体细节自己调整下,比如like需要通配符
    2019-02-26 13:55 
最佳回答
0
18568453967Lv2见习互助
发布于2019-2-26 14:25

select * from `已报课程(月)` WHERE `已报课程(月)`.`产品名称`LIKE '%营' AND EXISTS (SELECT 1 FROM `已报课程(月)`WHERE `已报课程(月)`.`学生姓名`=`已报课程(月)`.`学生姓名` AND `已报课程(月)`.`产品名称` LIKE '%1对1' AND `数量`>=176 )

最佳回答
0
yaoyongweiLv2见习互助
发布于2019-2-26 16:20

select * FROM

(select * from 测试 where 产品名称 LIKE '%一对一' AND 数量 >=176) a 

LEFT JOIN (select * from 测试 where 产品名称 LIKE '%营') b ON a.校区=b.校区 AND a.学员=b.学员 AND a.班级=b.班级 and a.产品名称<>b.产品名称

where b.校区 is not null


  • 3关注人数
  • 782浏览人数
  • 最后回答于:2019-2-26 16:20
    请选择关闭问题的原因
    确定 取消
    返回顶部