/**** 过滤条件COLOR
1、YELLOW或者TOMATO 则显示TOMATO
2、全WHITE 则显示WHITE
3、只要有一个LAWNGREEN 则显示LAWNGREEN
4、全LAWNGREEN 则显示LAWNGREEN
****/
以下是解决方案SQL
1、使用wm_concat()函数将多行数据按单号分组合并成一行。
2、再使用case 语法进行条件过滤,instr()函数判断字符串中是否包含某个字符结果大于0则包含。
select
ORDERNO,
case
WHEN (instr(wm_concat(COLOR),'YELLOW') >0 or instr(wm_concat(COLOR),'TOMATO')>0) THEN 'TOMATO'
WHEN (instr(wm_concat(COLOR),'LAWNGREEN') >0) THEN 'LAWNGREEN'
else 'WHITE'
end COLOR
from CUS_VIEW_PFJHLOT_JHDETAILS
where
orderno='SO22032400003'
group by
ORDERNO
运行结果: