我在表中有两种类型的客户,即特权用户和普通用户。当我从customers表中选择一些列值时,我想要普通用户的默认值,而我需要特权用户的实际值。 查询:
select name,id,budget,employees,duration from customers
where reg_date >= to_date( '01-SEP-2012','dd-mmm-yyyy')
and reg_date <= to_date('01-OCT-2012','dd-mmm-yyyy')
对于普通用户,我需要预算,员工,持续时间列的值为0。
我必须通过'id'和'reg_mode'查询另一个表来检查用户是否是特权用户。我可能会被告知我应该在customers表中有一列包含客户的“类型”。不幸的是,我无权修改表格。是否有任何想法以更短的延迟来提升价值?
答案 0 :(得分:1)
不确定我是否得到它,特别是因为表结构不那么清楚...... 让我们假设其他表名是user_type。我想你想要的是(注意我的查询可能有小错误,因为我没有尝试,我只是想了解结构):
select name,id, '0' as budget, '0' as employees, '0' as duration from customers
inner join user_type on
customers.id = user_type.id
where reg_date >= to_date( '01-SEP-2012','dd-mmm-yyyy')
and reg_date <= to_date('01-OCT-2012','dd-mmm-yyyy')
and user_type.reg_mode = 'normal'
union
select name,id, budget, employees, as duration from customers
inner join user_type on
customers.id = user_type.id
where reg_date >= to_date( '01-SEP-2012','dd-mmm-yyyy')
and reg_date <= to_date('01-OCT-2012','dd-mmm-yyyy')
and user_type.reg_mode = 'privileged'
内部联接类似于哪里,如果您对该术语有疑问,请告诉我......
答案 1 :(得分:0)