0

我只想按 Painter 或不按 Painter 排序。

甲骨文 10g

示例数据:

工作类型

  • 厨师
  • 画家
  • 程序员
  • 邮递员
  • 接待员
  • 家庭主妇
  • 父亲
  • 母亲
  • ETC

一个人可以为每种工作类型设置一行,但他们可以拥有多个工作。

SELECT   ...(LIST OF FIELDS)...,
         WM_CONCAT(job_type) AS myJob_Type
FROM     (MYTABLE)
GROUP BY ...(LIST OF FIELDS)...

这为我提供了逗号分隔列表中 myJob_Type 中的所有 job_type。这行得通。

现在我想要一种方法,当作业中有“画家”时,我可以按 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 

有什么建议么。

4

1 回答 1

1

你可以试试:

select   ...
         wm_concat(job_type) as myJob_Type,
         sum(decode(job_type,'Painter',1,0))
from     ...
group by ...
于 2012-07-12T13:31:24.167 回答