TABLE1的FIELDS:F1,F2,F3
要求统计(F1=VAL11 AND F2=VAL21)
以及    (F1=VAL12 AND F2=VAL22)
(当然可以再增加类似的条件)的记录数,然后按F3分组。
即:(假设F3的值有A,B,C)
F3  (F1=VAL11 AND F2=VAL21) (F1=VAL12 AND F2=VAL22) 
-------------------------------------------------------
A           0                         1
B           1                         2
C           0                         0

解决方案 »

  1.   

    select * from table1 where (F1=VAL11 AND F2=VAL21) or(F1=VAL12 AND F2=VAL22);
      

  2.   

    TO zhwquan(飞雪):
    老兄,我要统计符合一些条件的记录,
    统计完了再按某个字段分组。
      

  3.   

    select * from table1 
    where (F1=VAL11 AND F2=VAL21) or(F1=VAL12 AND F2=VAL22)
    group by field
      

  4.   

    select count(f1) f0,f1,f2,f3 from table1 where F1=VAL11 AND F2=VAL21 and F3=VAL=33) order by f3
      

  5.   

    TO My_first(海浪) :
    我要把符合(F1=VAL11 AND F2=VAL21)的记录数统计出来(计为:统计1)
          符合(F1=VAL12 AND F2=VAL22)的记录数统计出来(计为:统计2)
    即:
    分组字段  统计1  统计2
    A         0     1
    B         2     1
    C         2     0
    ......
    各位高手关注一下吧。
      

  6.   

    select 分组字段,A.统计1, B.统计2 From 
    ((select Count(*) as 统计1 from table 
     Where (F1=VAL11 AND F2=VAL21)as A,
     (select Count(*) as 统计2 From table
      where (F1=VAL12 AND F2=VAL22) As B
    ) As C
    Group C.分组字段
      

  7.   

    select 分组字段,A.统计1, B.统计2 From 
    ((select 分组字段,Count(*) as 统计1 from table 
     Where (F1=VAL11 AND F2=VAL21)as A,
     (select 分组字段,Count(*) as 统计2 From table
      where (F1=VAL12 AND F2=VAL22) As B
    ) As C
    Group C.分组字段
      

  8.   

    也许是我没表述清楚吧,看来各位高手还没明白我的意思。
    我想做的事是这样的:统计各单位(对应字段F3)级别
    (对应字段F1)为“正处级”,职别(对应字段F2)“正处职”
    的人数(记为人数一);
    级别(对应字段F1)为“正处级”,职别(对应字段F2)“副处职”
    的人数(记为人数二);
    依此类推。
    结果为:
    ===============
    单位    人数一  人数二  人数三 ... 人数N
    单位一  1       0      1      ... 0
    单位二  2       2      0      ... 1
    ... ...   
    单位M   1       3      4      ... 9
      

  9.   

    TO linzhisong(子松):
    人数1到人数N可以确定。
      

  10.   

    TO long102(龙102) :
    都是确定的,
    我这里这么写只是一种概括而矣。
    谢谢关注与参与。
      

  11.   

    一个思路
    select F3,
    count(decode((F1=VAL11 AND F2=VAL21),true,1,false,0)) 人数一,
    count(decode((F1=VAL21 AND F2=VAL22),true,1,false,0)) 人数二
    from table
    group by F3
    decode 是oracle中的函数,sqlsever中可用case when then。
    不过我刚才在sqlserver中试了一下.好像case中的表达式不支持(F1=VAL11 AND F2=VAL21)这种形式。
    你再试一下吧。
      

  12.   

    (*//
    声明:
      本人保证所提供的方法是所知的最好方法
      解答问题纯属公益性质
      所以请不要向我追问
      如果有时间自会关注后续问题
    分析:
      把符合条件的记录看成1,不符合的看成0,之后累加!
    问题:如何分组计算符合条件的记录数?
    设计:Zswang
    日期:2002-09-30
    方案:采用SUM()函数和CASE语句 //如果是Access可以用IIF()函数取代CASE语句
    附言:以下语句没有调试过。提这个问题的时候最好告诉大家你使用的是什么数据库,并提供模拟数据。
    //*)--for SQL Server
    -------------------------------------------------------------
    SELECT F3,
      SUM(CASE WHEN F1=VAL11 AND F2=VAL12 THEN 1 ELSE 0 END) AS 人数1,
      SUM(CASE WHEN F1=VAL21 AND F2=VAL22 THEN 1 ELSE 0 END) AS 人数2,
      SUM(CASE WHEN F1=VAL31 AND F2=VAL32 THEN 1 ELSE 0 END) AS 人数3,
      /* ..., ... */
      SUM(CASE WHEN F1=VAL41 AND F2=VAL42 THEN 1 ELSE 0 END) AS 人数N 
    FROM TABLE1
    GROUP BY F3
    -------------------------------------------------------------
      

  13.   

    select f3,isnull(sum(f1),0),isnull(sum(f2),0)  from (
    select * from table1
    where (F1=VAL11 AND F2=VAL21) 
           or(F1=VAL12 AND F2=VAL22)) table_Alias 
    group by f3
     
    说明:
       1,利用select * from table1
    where (F1=VAL11 AND F2=VAL21) 
           or(F1=VAL12 AND F2=VAL22)
    语句选出所有符合条件的数据,得到一个满足条件的数据集.
       2,在第一步得到的数据集的基础上在利用f3来分组,对f1,f2做sum,此处应该是sum,而非count.
     看看行吗,行的话可要给分咯,:)
      

  14.   

    TO  Gote(宝鼎):
    好象不行呀,你这里是统计的对象都不对了。