![](/img/trans.png)
[英]How to format an aggregate function result in SQL select query of Oracle Database?
[英]How to format query result in Oracle?
我有一個名為EMP的表,該表具有一個稱為JOB的列。 現在,JOB列具有各種條目,如CLERK,SALESMAN,MANAGER等。我想獲取所有的行(和列),其中JOB ='CLERK',但我不想顯示'CLERK',而是要顯示'NEW CLERK'。 我不應該更改表中的值,但在查詢時將其顯示為不同的值。 這可能嗎?
[抱歉,如果這沒有意義-這是一個作業問題]
一種實現方法是使用CASE表達式,例如:
SELECT CASE WHEN t.job = 'CLERK' THEN 'NEW CLERK' ELSE t.job END AS job
, t.other_col
FROM emp t
這將從JOB
列返回值,除了將'CLERK'
替換為文字值'NEW CLERK'
。
如果您要進行幾種不同的替換,則CASE表達式的搜索形式會很方便:
SELECT CASE t.job
WHEN 'CLERK' THEN 'NEW CLERK'
WHEN 'SALESMAN' THEN 'GOOD SALESMAN'
ELSE t.job
END AS job
, t.other_col
FROM emp t
“搜索”形式只是一種較短的書寫方式:
SELECT CASE
WHEN t.job = 'CLERK' THEN 'NEW CLERK'
WHEN t.job = 'SALESMAN' THEN 'GOOD SALESMAN'
ELSE t.job
END AS job
, t.other_col
FROM emp t
如果僅返回在JOB列中具有“ CLERK”的行,則只需在語句中返回一個文字:
SELECT 'NEW CLERK' AS job
, t.other_col
FROM emp t
WHERE t.job = 'CLERK'
- 要么 -
SELECT 'NEW '||t.job AS job
, t.other_col
FROM emp t
WHERE t.job = 'CLERK'
有可能的。 這樣的事情應該起作用:
select case JOB when 'CLERK' then 'NEW CLERK' else JOB end as JOB from your_table
您可以使用案例陳述
SELECT empno,
ename,
CASE WHEN job = 'CLERK' THEN 'NEW CLERK' ELSE job END job,
mgr,
hiredate,
sal,
comm,
deptno
FROM emp
WHERE job = 'CLERK'
如果您已經按工作過濾,則可以將新值直接顯示為常量。
SELECT 'NEW CLERK' as job
FROM EMP
WHERE job='CLERK'
您還可以使用decode
而不是CASE
:
SELECT decode(job,'CLERK','NEW CLERK',job)
FROM EMP
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.