| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1306 人关注过本帖
标题:小女子求大神相助,如何分组筛选!!
只看楼主 加入收藏
MYFLBB
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-6-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
小女子求大神相助,如何分组筛选!!
业务数据表如下:如何筛选在时间为220000 至 隔天时间为060000 发生的业务明细,且该期间发生业务笔数3笔或以上。大神们SQL 代码应该怎么写,要交作业了,但是不会啊

名称    日期    时间    金额    流水号
A    20220101    220010    50        282
A    20220101    900000    15        123
A    20220102    040000    20        246
A    20220102    040305    60        156
A    20220102    020306    45        645
B    20220201    110000    45        889
B    20220202    060000    35        966
B    20220202    010000    25        966
C    20220303    220310    10        556
C    20220303    220050    30        176
C    20220303    060000    20        456
C    20220303    230405    5        458
C    20220401    230000    75        313
搜索更多相关主题的帖子: 筛选 小女子 分组 业务 时间 
2022-06-28 18:20
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:20 
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-05 17:24
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
-- 1.先把000000至060000的时间,把日期-1
select 名称,日期,时间,金额,流水号,
       case when 时间 between'000000' and '060000' then cast(日期 as datetime)-1
            else cast(日期 as datetime) end as 新日期
 from 业务
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-05 17:26
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
-- 2.把符合的记录找出来
 select 名称,日期,新日期,时间,金额,流水号 from (
    select 名称,日期,时间,金额,流水号,
       case when 时间 between'000000' and '060000' then cast(日期 as datetime)-1
            else cast(日期 as datetime) end as 新日期
    from 业务)t1
 where (t1.时间 between'000000' and '060000') or (t1.时间 between'220000' and '235959')
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-05 17:27
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
-- 过滤3次
select t2.新日期,SUM(金额)金额 from (
  select 名称,日期,新日期,时间,金额,流水号 from (
    select 名称,日期,时间,金额,流水号,
       case when 时间 between'000000' and '060000' then cast(日期 as datetime)-1
            else cast(日期 as datetime) end as 新日期
    from 业务)t1
 where (t1.时间 between'000000' and '060000') or (t1.时间 between'220000' and '235959')
 )t2
 group by 新日期 having COUNT(1)>=3
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-05 17:30
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
select t5.名称,t5.日期,t5.时间,t5.金额,t5.流水号
 from
   (select 名称,日期,新日期,时间,金额,流水号 from (
    select 名称,日期,时间,金额,流水号,
       case when 时间 between'000000' and '060000' then cast(日期 as datetime)-1
            else cast(日期 as datetime) end as 新日期
    from 业务)t1
    where (t1.时间 between'000000' and '060000') or (t1.时间 between'220000' and '235959')
   )t5,
  (select t2.新日期,SUM(金额)金额 from (
    select 名称,日期,新日期,时间,金额,流水号 from (
     select 名称,日期,时间,金额,流水号,
       case when 时间 between'000000' and '060000' then cast(日期 as datetime)-1
            else cast(日期 as datetime) end as 新日期
    from 业务)t1
    where (t1.时间 between'000000' and '060000') or (t1.时间 between'220000' and '235959')
   )t2
   group by 新日期 having COUNT(1)>=3
   )t6
 where t6.新日期=t5.新日期
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-05 17:38
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
6,7楼中的
SUM(金额)金额,可以不要
不知道,能不能简化哦。。。
2022-07-05 17:41
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
select t1.名称,t1.日期,t1.时间,t1.金额,t1.流水号
from
( select 名称,日期,时间,金额,流水号,
         新日期=(case when 时间 between '000000' and '060000' then CAST(日期 AS datetime)-1
                 else CAST(日期 as datetime) end)
  from 业务
  where (时间 between '000000' and '060000') or (时间 between '220000' and '235959')
 )t1,
( select 新日期 from
  ( select 新日期=(case when 时间 between '000000' and '060000' then CAST(日期 AS datetime)-1
                   else CAST(日期 as datetime) end)
    from 业务
    where (时间 between '000000' and '060000') or (时间 between '220000' and '235959')
  )t3
  group by 新日期 having COUNT(1)>=3
 )t2
 where t1.新日期 = t2.新日期
 order by t1.日期
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-07-06 08:57
快速回复:小女子求大神相助,如何分组筛选!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043201 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved