ORACLE查询,多表关联,分组加条件查询问题.表结构如下.

CREATETABLETEST(ANUMBER,BNUMBER)/INSERTINTOTESTVALUES(1,1);INSERTINTOTESTVALUES(1,1);... CREATE TABLE TEST(
A NUMBER,
B NUMBER

)
/

INSERT INTO TEST VALUES(1,1);
INSERT INTO TEST VALUES(1,1);
INSERT INTO TEST VALUES(2,2);
INSERT INTO TEST VALUES(2,2);
INSERT INTO TEST VALUES(2,2);

CREATE TABLE TEST_1(
A NUMBER,
C NUMBER,
D NUMBER

)
INSERT INTO TEST_1 VALUES(1,1,3);
INSERT INTO TEST_1 VALUES(2,2,4);

1.TEST和TEST_1是通过A字段来关联.
2.目标结果:查询出TEST.A,条件为,GTOUP BY A , TEST.COUNT(B)大于TEST_1.D - TEST_1.C
中文翻译: TEST表中,以A分组,B的数量大于TEST_1中D和C的差.的所有A的值.
问题稍微有点小绕,不过相信各位大神应该看得懂.悬赏200求解.
展开
 我来答
大话残剑
2016-06-14 · TA获得超过2217个赞
知道大有可为答主
回答量:1137
采纳率:56%
帮助的人:708万
展开全部

这跟上一个差不多吧

SELECT *
  FROM TEST
 WHERE A IN
       (SELECT T1.A
          FROM (SELECT A, COUNT(B) CNT FROM TEST GROUP BY A) T1, TEST_1 T2
         WHERE T1.A = T2.A
           AND T1.CNT > (T2.D - T2.C))
更多追问追答
追问
那如果在count(B)的时候,要对B加限制怎么办? 我直接在最里层子查询中加了一个HAVING B IN(1,2)不行.
追答

怎么限制b,像这样吗

SELECT *
  FROM TEST
 WHERE A IN
       (SELECT T1.A
          FROM (SELECT A, COUNT(B) CNT
                   FROM TEST
                  WHERE B IN (1,2)
                  GROUP BY A) T1,
               TEST_1 T2
         WHERE T1.A = T2.A
           AND T1.CNT > (T2.D - T2.C))
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jerfym2
2016-06-14 · TA获得超过476个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:204万
展开全部
select pid,
sum(case when type=0 then 1 else 0 end) type_0,
sum(case when type=1 then 1 else 0 end) type_1,
sum(case when type=2 then 1 else 0 end) type_2
from A
group by pid
追问
不是很明白,TYPE是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式