描述:
三个表: 表A,表B,表C,其中A表中F_DID和B表中F_DID均为外键,A表中F_ID为主键,最后视图中显示的结果是,如果A表中F_DID的一个值对应有几条数据则视图中就有几个Value字段,如图中所示。
表A
F_ID F_DID F_Name
02010101 020101 Test0
02010102 020101 Test1
表BF_DID F_Keyword
020101 123456
表CF_Keyword F_ID F_Value
123456 02010101 100
123456 02010102 200
视图F_DID F_Keyword F_02010101_Value F_02010102_Value
020101 123456 100 200
三个表: 表A,表B,表C,其中A表中F_DID和B表中F_DID均为外键,A表中F_ID为主键,最后视图中显示的结果是,如果A表中F_DID的一个值对应有几条数据则视图中就有几个Value字段,如图中所示。
表A
F_ID F_DID F_Name
02010101 020101 Test0
02010102 020101 Test1
表BF_DID F_Keyword
020101 123456
表CF_Keyword F_ID F_Value
123456 02010101 100
123456 02010102 200
视图F_DID F_Keyword F_02010101_Value F_02010102_Value
020101 123456 100 200
SQL> with a as(
2 select '02010101' f_id,'020101' f_did,'Test0' f_name from dual union all
3 select '02010102','020101','Test1' from dual)
4 ,b as(
5 select '020101' f_did,'123456' F_Keyword from dual)
6 ,c as(
7 select '123456' F_Keyword,'02010101' F_ID,100 F_Value from dual union all
8 select '123456','02010102',200 from dual)
9 select b.f_did,b.f_keyword,
10 max(decode(c.f_id,'02010101',c.f_value)) F_02010101_Value,
11 max(decode(c.f_id,'02010102',c.f_value)) F_02010102_Value
12 from a,b,c
13 where b.f_did=a.f_did
14 and b.f_keyword=c.f_keyword
15 group by b.f_did,b.f_keyword
16 /
F_DID F_KEYWORD F_02010101_VALUE F_02010102_VALUE
------ --------- ---------------- ----------------
020101 123456 100 200
oracle create view语法