试一下,没测试过
select case kind=10 when then (select ta.id from ta,ma where ta.kind=10 and ta.no=ma.no)
else (select ta.id from ta,mb where ta.kind=20 and ta.no=mb.no) end from tA;
Simple CASE Example
For each customer in the sample oe.customers table, the following statement lists the credit limit as "Low" if it equals $100, "High" if it equals $5000, and "Medium" if it equals anything else.
SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium' END
FROM customers;
CUST_LAST_NAME CASECR
-------------------- ------
...
Bogart Medium
Nolte Medium
Loren Medium
Gueney Medium
Searched CASE Example
The following statement finds the average salary of the employees in the sample table oe.employees, using $2000 as the lowest salary possible:
SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary
ELSE 2000 END) "Average Salary" from employees e;