我只想按Painter或非Painter排序。
Oracle 10g
示例数据:
作业类型
- 厨师
- 油漆工
- 程序员
- 邮差
- 接待员
- 家庭主妇
- 父亲
- 母亲
- 等等
一个人可以为每种工作类型有一行,但他们可以有多份工作。
SELECT ...(LIST OF FIELDS)...,
WM_CONCAT(job_type) AS myJob_Type
FROM (MYTABLE)
GROUP BY ...(LIST OF FIELDS)...
这将以逗号分隔的列表形式显示myJob_type中的所有job_type。这是有效的。
现在我想要一种方法,当作业中有"Painter"时,我可以按myJob_Type进行排序。我不在乎任何其他作业类型。所以我的想法是,如果Painter在myJob_Type中,但当我让它工作时,我会再次得到多条线。
SELECT ...(LIST OF FIELDS)...,
WM_CONCAT(job_type) AS myJob_Type,
CASE WHEN(job_ype like '%Painter%') THEN '1'
ELSE '0'
END
FROM (MYTABLE)
GROUP BY ...(LIST OF FIELDS)...,
job_ype
尝试了另一种选择。
SELECT ...(LIST OF FIELDS)...,
WM_CONCAT(job_type) AS myJob_Type,
CASE WHEN(myJobType like '%Painter%') THEN '1'
ELSE '0'
END
FROM (MYTABLE)
GROUP BY ...(LIST OF FIELDS)...,
myJobType
任何建议。
您可以尝试:
select ...
wm_concat(job_type) as myJob_Type,
sum(decode(job_type,'Painter',1,0))
from ...
group by ...