写了一个复杂的SQL语句
Posted by boypoo on June 3rd, 2010最近一个客户提了这么一个要求:
有两张表,F1,F2,这两张表有3个的关键字:
K1:订单号
K2:订单公司
K3:订单类型要求是统计F1/F2这两张表相同关键字下的记录数,比较是否一致
我简单做了个模型:
SQL> select * from f1;
K1 K2 K3 K4
———- ———- ———- ———-
1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 2
1 1 2 3SQL> select * from f2;
K1 K2 K3 K4
———- ———- ———- ———-
1 1 1 3
1 1 1 4
1 1 1 5
2 2 2 1
2 2 2 2
2 2 2 3
2 2 2 4
客户要求的输出如下:
K1 K2 K3 F1COUNT F2COUNT
——— ———- ———- ———- ———-
1 1 1 2 3
1 1 2 3 0
2 2 2 0 4
歪歪曲曲的写了个”复杂”的SQL语句:
select f1.k1,f1.k2,f1.k3,f1count,f2count from
(select f1.k1,f1.k2,f1.k3,f1count,f2.k1,f2.k2,f2.k3,f2count f2count from
(select f1.k1,f1.k2,f1.k3,count(1) f1count from f1 group by k1,k2,k3) f1
full outer join
(select f2.k1,f2.k2,f2.k3,count(1) f2count from f2 group by k1,k2,k3) f2
on f1.k1=f2.k1 and f1.k2=f2.k2 and f1.k3=f2.k3));
我认为还应该有更简洁的写法,但暂时还没想到。
很多年不写语句了,暂记一下。想到好的再更新上来

Recent Comments