怎么将多笔数据用SQL语句过滤出指定的值?

pic-039.png

图是希望产出的语句结果,数据库是sql server 

只要同一个ID里的TYPE值存在AA就取AA  (故AA/BB/CC  or AA/BB or AA/CC都是AA)

没有AA的话次优先是BB (故BB/CC是BB)

只有单一笔的话就取出唯一那笔(故只有AA就是AA、BB就是BB、CC就是CC)

此处的AA/BB/CC只是代称,实际是其他的特定文字串

一个ID只会配到一个TYPE

还没开始写FR就被SQL卡住了...请大神帮帮我

FineReport SQL akahime 发布于 2023-1-30 15:30
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-1-30 15:36

那你在第一层的查询中加一个辅助列。。。再用开窗函数

select t2.*

from (

select t.*

ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY 排序字段 ) AS RN

 from (

select 

*,

case when 字段 like '%字符a%' then 1

when 字段 like '%字符b%' then 2

when 字段 like '%字符c%' then 3

when 字段 like '%字符d%' then 4

else 5 end as 排序字段

from 表名称

) t

 )t2

where t2.rn=1

  • akahime akahime(提问者) 听你的包个两层弄出来了!谢谢!
    2023-01-30 15:53 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-1-30 15:32

用存储过程加临时表处理吧

最佳回答
0
yzmaXc2M6954290Lv3见习互助
发布于2023-1-30 15:54

分析函数row_number给TYPE排序,取第一个

  • 3关注人数
  • 365浏览人数
  • 最后回答于:2023-1-30 15:54
    请选择关闭问题的原因
    确定 取消
    返回顶部