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
要求统计(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
老兄,我要统计符合一些条件的记录,
统计完了再按某个字段分组。
where (F1=VAL11 AND F2=VAL21) or(F1=VAL12 AND F2=VAL22)
group by field
我要把符合(F1=VAL11 AND F2=VAL21)的记录数统计出来(计为:统计1)
符合(F1=VAL12 AND F2=VAL22)的记录数统计出来(计为:统计2)
即:
分组字段 统计1 统计2
A 0 1
B 2 1
C 2 0
......
各位高手关注一下吧。
((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.分组字段
((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.分组字段
我想做的事是这样的:统计各单位(对应字段F3)级别
(对应字段F1)为“正处级”,职别(对应字段F2)“正处职”
的人数(记为人数一);
级别(对应字段F1)为“正处级”,职别(对应字段F2)“副处职”
的人数(记为人数二);
依此类推。
结果为:
===============
单位 人数一 人数二 人数三 ... 人数N
单位一 1 0 1 ... 0
单位二 2 2 0 ... 1
... ...
单位M 1 3 4 ... 9
人数1到人数N可以确定。
都是确定的,
我这里这么写只是一种概括而矣。
谢谢关注与参与。
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)这种形式。
你再试一下吧。
声明:
本人保证所提供的方法是所知的最好方法
解答问题纯属公益性质
所以请不要向我追问
如果有时间自会关注后续问题
分析:
把符合条件的记录看成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
-------------------------------------------------------------
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.
看看行吗,行的话可要给分咯,:)
好象不行呀,你这里是统计的对象都不对了。