Vis*_*amy 0 sql oracle oracle11g
我有三个表格如下:
--------------------------
Account Number | AGR ID
--------------------------
111 1234
222 2234
---------------------------
--------------------------
AGR Number | Meter ID
--------------------------
1234 123
2234 223
---------------------------
---------------------------
Meter ID | Meter Read Date
---------------------------
123 2016-01-17
123 2016-03-13
223 2016-11-23
Run Code Online (Sandbox Code Playgroud)
现在我需要打印帐户ID和基于第三个表中可用的仪表读数的值.
对于上面的数据,我需要一个输出,如:
----------------------------------
Account ID | Is multiple reads
----------------------------------
111 Y
222 N
Run Code Online (Sandbox Code Playgroud)
GROUP BY而且CASE应该够了
select
t1.Account_Number,
case when count(*) > 1 then 'Y' else 'N' end Is_multiple
from table1 t1
inner join table2 t2
on t1.meter_id = t2.meter_id
group by t1.Account_Number;
Run Code Online (Sandbox Code Playgroud)
根据修改后的架构,这应该工作:
select
t1.Account_Number,
case when count(*) > 1 then 'Y' else 'N' end Is_multiple
from table1 t1
inner join table2 t2
on t1.agr_id = t2.agr_id
inner join table3 t3
on t2.meter_id = t3.meter_id
group by t1.Account_Number;
Run Code Online (Sandbox Code Playgroud)