SQL - 指定字母顺序
我想要 Completion_Status 列的特定顺序,如下所示:
已完成、已通过、未完成和已通过。失败
我该如何订购?我想定义上面的顺序。
我尝试了 CASE,但它给了我一个错误,如 Expecting NUM not CHAR。
select DISTINCT
u.first_name || ' ' || u.last_name "Employee_Name",
rco.title "Course_Name",
decode(p.status,'P','Passed', 'F','Failed', 'C','Completed', 'I','Incomplete', 'Not Attempted') "Completion_Status",
to_char(p.completed_date,'YYYY-MM-DD') "Date_Completed"
from
offering o, offering_enrollment oe, users u , performance p, offering_content_object c, content_object rco
where
o.id = oe.offering_id and
u.id = oe.user_id and
o.content_object_id = c.id AND
p.content_object_id = c.source_id and
p.content_object_id = rco.id AND
p.user_id(+) = u.id and
u.id in ( select id
from users
where manager_id = $user.id$)
AND
p.content_object_id NOT IN (41453457, 130020319, 43363877)
order by
"Employee_Name", "Completion_Status"
I want a specific order for the Completion_Status column as in:
Completed, Passed, Incomplete & Failed
How do I do I order this? I want to define the order above.
I tried CASE but it give me an error as in Expecting NUM not CHAR.
select DISTINCT
u.first_name || ' ' || u.last_name "Employee_Name",
rco.title "Course_Name",
decode(p.status,'P','Passed', 'F','Failed', 'C','Completed', 'I','Incomplete', 'Not Attempted') "Completion_Status",
to_char(p.completed_date,'YYYY-MM-DD') "Date_Completed"
from
offering o, offering_enrollment oe, users u , performance p, offering_content_object c, content_object rco
where
o.id = oe.offering_id and
u.id = oe.user_id and
o.content_object_id = c.id AND
p.content_object_id = c.source_id and
p.content_object_id = rco.id AND
p.user_id(+) = u.id and
u.id in ( select id
from users
where manager_id = $user.id$)
AND
p.content_object_id NOT IN (41453457, 130020319, 43363877)
order by
"Employee_Name", "Completion_Status"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您也许可以使用类似的内容:
您可能需要更改 CASE 以处理原始“p.status”值,在这种情况下,WHEN 条件也会更改:
You may be able to use something like:
You might need to change the CASE to work on the raw 'p.status' value, in which case the WHEN conditions change too:
编辑:我现在假设你的基本数据是单个字符......
Edit: i now assume your base data is the single char...
您必须在案件陈述中自行提供订单:
You have to provide the order yourself in your case statement:
您可以在 SELECT: 中添加一个新行,
然后对其进行 ORDER BY 吗?
Can you add a new line to SELECT:
and then ORDER BY it?
谢谢大家的回复:
以下内容非常有效!
Thank you all for your replies:
The following worked like a charm!