图是希望产出的语句结果,数据库是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卡住了...请大神帮帮我
那你在第一层的查询中加一个辅助列。。。再用开窗函数
select t2.*
from (
select t.*
ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY 排序字段 ) AS RN
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
用存储过程加临时表处理吧
分析函数row_number给TYPE排序,取第一个