SQL按type计算行数的三种方法-黎红军
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


SQL按type计算行数的三种方法

发表时间:2008/3/31 18:35:46 评论(0) 浏览(6590)  评论 | 加入收藏 | 复制
   
摘 要:SQL按type计算行数的三种方法
正 文:
我有一个叫做TestTable的表,它有一个字段,Type Varchar(5)。表中的数据如下:

  Type
  A
  B
  A
  C
  A
  B

  所以在这个表中这个单独的字段里有六条记录。请帮助我写一个查询获得下面的结果:

  A B C

  3 2 1

  换句话说我想获得单独的Type字段数据和它们的数量。

  Rudy Limeback:

  有三种方式可以实现它:  

select ( select count(*)

  from TestTable

  where Type = 'A' ) as A

  , ( select count(*)

  from TestTable

  where Type = 'B' ) as B

  , ( select count(*)

  from TestTable

  where Type = 'C' ) as C

  在有些数据库里这第一个查询确实可以运行,但是它不是标准的SQL,因为它缺少了FROM条件。添加上双重FROM(或者其他任何一行的表)。  

select sum( case when Type = 'A'

  then 1 else 0 end ) as A

  , sum( case when Type = 'B'

  then 1 else 0 end ) as B

  , sum( case when Type = 'C'

  then 1 else 0 end ) as C

  from TestTable

  第二个查询确实可以得出你想要的,但是就像第一个查询一样,如果你发觉需要增加另一个Type,维护起来很麻烦。 

select Type

  , count(*)

  from TestTable

  group

  by Type

  第三个查询是最好的。不只是它一看就很容易理解,而且当添加新的Types时它还不需要维护。此外,它认为这个表达式不应该在数据库层处理。

  顺便,因为你的表只有一列,而它具有重复的值,这个列不能作为主键,因此这个表没有主键。有人会说它因此不是一个“真正”的表,是个包。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
用TypeName方法返回控件标准类型名称  【叶海峰  2012/7/24】
Access开发人员参考:RecordsetTypeEnum枚举与...  【红尘如烟  2012/12/25】
Access开发人员参考:AcObjectType枚举与AcFor...  【红尘如烟  2013/1/11】
AcObjectType 枚举  【小英  2013/1/31】
常见问答
技术分类
相关资源
文章搜索
关于作者

黎红军

文章分类

文章存档

友情链接