SELECT a.户主, a.户主身份证号, b.成员数, b.合计应领, b.合计应扣, a.姓名, a.关系, a.性别, a.年龄, a.参保时间, a.出生日期, a.保障证号, a.身份证号, a.大归属地, a.小归属地, a.社, a.应领金额 AS 成员应领, a.应扣金额 AS 成员应扣, a.是否死亡, a.家庭住址, a.保障类型, a.死亡日期, a.是否统计
FROM 查询6_已赋值 AS a, (SELECT 户主身份证号, COUNT(*) AS 成员数, SUM(c.应领金额) AS 合计应领, SUM(c.应扣金额) AS 合计应扣 FROM 查询6_已赋值 AS c  GROUP BY 户主身份证号)  AS b
WHERE a.户主身份证号=b.户主身份证号;以上查询全部信息的SQL我要条件查询的时候,我试验过两种情况:
1:
SELECT a.户主, a.户主身份证号, b.成员数, b.合计应领, b.合计应扣, a.姓名, a.关系, a.性别, a.年龄, a.参保时间, a.出生日期, a.保障证号, a.身份证号, a.大归属地, a.小归属地, a.社, a.应领金额 AS 成员应领, a.应扣金额 AS 成员应扣, a.是否死亡, a.家庭住址, a.保障类型, a.死亡日期, a.是否统计
FROM 查询6_已赋值 AS a, (SELECT 户主身份证号, COUNT(*) AS 成员数, SUM(c.应领金额) AS 合计应领, SUM(c.应扣金额) AS 合计应扣 FROM 查询6_已赋值 AS c  GROUP BY 户主身份证号)  AS b
WHERE a.户主身份证号=b.户主身份证号 and a.身份证号='625219196803403041';这样加上条件子句,出来的答案没有问题,但就是速度还不够快,达不到理想的效果.2:
SELECT a.户主, a.户主身份证号, b.成员数, b.合计应领, b.合计应扣, a.姓名, a.关系, a.性别, a.年龄, a.参保时间, a.出生日期, a.保障证号, a.身份证号, a.大归属地, a.小归属地, a.社, a.应领金额 AS 成员应领, a.应扣金额 AS 成员应扣, a.是否死亡, a.家庭住址, a.保障类型, a.死亡日期, a.是否统计
FROM 查询6_已赋值 AS a, (SELECT 户主身份证号, COUNT(*) AS 成员数, SUM(c.应领金额) AS 合计应领, SUM(c.应扣金额) AS 合计应扣 FROM 查询6_已赋值 AS c where c.身份证号='625219196803403041' 
 GROUP BY 户主身份证号)  AS b
WHERE a.户主身份证号=b.户主身份证号;这样加上条件子句,出来结果倒是比较快,但是结果有问题,结果把'625219196803403041'这个身份证号所对应的这一户户主所 包括的全部成员的记录都列出来了,得到的不是单条记录.
向各位高手求教??????这个SQL的条件子句该如何写?才能使速度又快又准确??????????????????????

解决方案 »

  1.   

    SELECT a.户主,
           a.户主身份证号,
           count(1) over(partition by 户主身份证号) 成员数,
           SUM(c.应领金额) over(partition by 户主身份证号) AS 合计应领, 
           SUM(c.应扣金额) over(partition by 户主身份证号) AS 合计应扣,

           a.姓名,
           a.关系,
           a.性别,
           a.年龄,
           a.参保时间,
           a.出生日期,
           a.保障证号,
           a.身份证号,
           a.大归属地,
           a.小归属地,
           a.社,
           a.应领金额     AS 成员应领,
           a.应扣金额     AS 成员应扣,
           a.是否死亡,
           a.家庭住址,
           a.保障类型,
           a.死亡日期,
           a.是否统计
      FROM 查询6_已赋值 AS a
     WHERE a.身份证号 = '625219196803403041';
      

  2.   

    重新写一下:SELECT a.户主,
      a.户主身份证号,
    count(1) over(partition by 户主身份证号) 成员数,
    SUM(应领金额) over(partition by 户主身份证号) AS 合计应领, 
    SUM(应扣金额) over(partition by 户主身份证号) AS 合计应扣,
      a.姓名,
      a.关系,
      a.性别,
      a.年龄,
      a.参保时间,
      a.出生日期,
      a.保障证号,
      a.身份证号,
      a.大归属地,
      a.小归属地,
      a.社,
      a.应领金额 AS 成员应领,
      a.应扣金额 AS 成员应扣,
      a.是否死亡,
      a.家庭住址,
      a.保障类型,
      a.死亡日期,
      a.是否统计
      FROM 查询6_已赋值 AS a
     WHERE a.身份证号 = '625219196803403041';
      

  3.   

    还要再提一下的是,我写的这个SQL是用与ACCESS数据库,,,可能大家写的有些函数用不上
      

  4.   

    我晕,这2个数据库,不是同一个重量级的。ACCESS限制比较多,好多语法都不支持的
      

  5.   

    我晕
    用access
    是轻松了,还是麻烦了
      

  6.   

    楼主是不是发错地方了?这里是Oracle讨论区
      

  7.   

    access是比较麻烦,我上一个项目用到了access,语句写得很郁闷
    这里你在第二个语句,最外层的where条件后加一个 and a.身份证号='625219196803403041'
    应该就行了
      

  8.   

    Access数据库对我来说非常高深啊一点不懂