查询sql,查出GROUP BY 之后的记录条数,及符合某个条件的记录条数,显示到一条记录中

SELECT CUST_NO,COUNT(*),STATUS FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5')

-- AND CUST_NO ='1234'

GROUP BY CUST_NO,STATUS

结果

CUST_NO STATUS COUNT(*)

11111 4 5

11111 5 4

11122 4 4

例如CUST_NO='11111',有4,5两个状态,我想查出CUST_NO='1111'的总条数,以及CUST_NO='1111' AND STATUS='4'的总条数,CUST_NO='1111' AND STATUS='5'的总条数。

查询结果样式为

CUST_NO COUNT1 COUNT2 COUNT3

11111 9 5 4 该如何写呢?

SELECT * FROM temp.CUST_NO ,temp.c,temp1.c1,temp2.c2
(SELECT CUST_NO,COUNT(*) c FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') GROUP BY CUST_NO) temp 
LEFT JOIN (SELECT CUST_NO,COUNT(*)c1 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='4'  GROUP BY CUST_NO) temp1 ON temp.CUST_NO=temp1.CUST_NO
LEFT JOIN (SELECT CUST_NO,COUNT(*) c2 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='5'  GROUP BY CUST_NO) temp2 ON temp.CUST_NO=temp2.CUST_NO

 查出根据CUST_NO分组 的sql组成表

在使用LEFT JOIN  查出根据CUST_NO分组并且条件STATUS=4的sql组成表

继续使用LEFT JOIN  查出根据CUST_NO分组并且条件STATUS=5的sql组成表


组合查出的数据就是你要的

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-07
使用子查询,
SELECT (SELECT COUNT(*) FROM CUST_DRAFTNO CD WHERE CD.STATUS IN ('4','5') AND CD.CUST_NO=CDINFO.CUST_NO) COUNT1 FROM CUST_DRAFTNO CDINFO WHERE CDINFO.CUST_NO='11111'
OK本回答被网友采纳
第2个回答  2013-03-05
使用子查询,
SELECT(SELECT COUNT(*)FROM CUST_DRAFTNO CD,WHERE CD.STATUS('4','5')和CD.CUST_NO = CDINFO.CUST_NO的)COUNT1从CUST_DRAFTNO CDINFO,CDINFO.CUST_NO =“ 11111“
OK

查询sql,查出GROUP BY 之后的记录条数,及符合某个条件的记录条数,显...
'4','5')AND STATUS IN ('4','5') AND STATUS='5' GROUP BY CUST_NO) temp2 ON temp.CUST_NO=temp2.CUST_NO 查出根据CUST_NO分组 的sql组成表在使用LEFT JOIN 查出根据CUST_NO分组并且条件STATUS=4的sql组成表

sql如何取group by 分组的多条记录只取最上面的一条!
insert into test_order values('001','B','bb');insert into test_order values('002','A','cc');3、查询表中所有记录,select t.*, rowid from test_order t;4、编写sql,获取所需记录,select from (select t.*,row_number() over(partition by userid order by ranking desc) rn ...

sql查询中怎么将两条内容相同的记录显示成一条
sql查询中两条内容相同的记录显示成一条可以用group by语句或distinct语句来实现。如,test表中有如下数据:group by的方法:select id,name from test group by id,name;查询结果:distinct的方法:select distinct id,name from test;查询结果:...

SQL语句统计记录条数,当特定两个字段值都相同时只算一条记录
如果以第一条为基准的话,那么应该是一条记录 如果是以第二条为基准的话,那么记录应该是两条,因为第三条和第二条一点都不重复 ---补充--- select a.c,count(*) from (select a,b,c,d,e from tablename group by c,d) a group by a.c ...

sql查询指定记录的条数
sql 使用 count可以统计指定记录的条数 结合group by 可以统计不同分类的条目数 例子:id name 1 xk 2 kl 3 xk 统计name = 'xk'的条数 select count(*)number from table where name = 'xk';结果 number 2

sql查询中如何用group by查询出完整的一行记录?
这条语句能把uploadtime最大的那一条数据查出来 select * 就是查出所有的数据,你再用where=* 过滤指定一下你要查数据的条件。关于你的语句{ select id,name,nickname,email,school,max(uploadtime) from table group by school } 这段代码只是随意查了个id,name等信息,但是不是max(uploadtime)...

求SQL语句 过滤重复记录 只显示一条
ORDER BY t1.id DESC;代码思路要比上面SQL代码复杂很多,我晚些时候再作补充说明。现在说明如下:你的问题的难点在于既要排除重复值又要使用自动ID排序。一般来讲消除重复值使用DISTINCT关键字或分组汇总方法非常方便,但问题是如果输出记录中包含自动ID字段,由于原表中每一条记录的自动ID值都是唯一的,...

sql查询中怎么将两条内容相同的记录显示成一条?
sql查询中两条内容相同的记录显示成一条可以用group by语句或distinct语句来实现。distinct支持单列、多列的去重方式。单列去重的方式简明易懂,即相同值只保留1个。多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。示例数据表中的数据:mysql> ...

sql 查询 group by查询count个数 某记录不存在时显示0
create table t ( id int, a int, b int ) insert into t values(1,101,1) insert into t values(2,102,1) insert into t values(3,101,2) insert into t values(4,102,2) insert into t values(5,101,1) insert into t values(6,102,3) insert into t values(7,...

SQL查询 多条记录拼接成一条记录
and stationlvl=N'一级站') --一级站 ,(select sum(num) from table where departdate=t.departdate and stationlvl=N'二级站') --二级站 ,(select sum(num) from table where departdate=t.departdate and stationlvl=N'三级站') --三级站 from table t group by departdate ...

相似回答