CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

这条查询语句如何写?

楼主zffzff(zss)2006-03-04 17:38:14 在 Delphi / 数据库相关 提问

有这样一个表table,内容如下  
  编号           姓名  
  001          张明  
  002   田华  
  003   张倩  
  004   刘娟  
  005   刘亮  
  要得到结果如下:  
  姓名  人数  
  张_   2  
  田_   1  
  刘_   2  
  就是要按‘姓氏’做出统计,如何做?UP有分?请留下您的建议,多谢!!!!!! 问题点数:100、回复次数:17Top

1 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 17:59:15 得分 0

SQL.Add('select   left([姓名],1)   as   姓名,count(left([姓名],1))   as   人数   from   TableName   group   by   left([姓名],1)');Top

2 楼janezjtjdx(学习中)回复于 2006-03-04 18:06:00 得分 20

要用到GROUP   BYTop

3 楼keiy()回复于 2006-03-04 18:06:21 得分 15

如果不考虑双姓,可用以下SQL(access,其它数据可改MID函数,如oracle用substr)  
  SELECT   Mid(姓名,1,1)+'_'     AS   姓   ,count(*)   as   人数  
  FROM   test1  
  group   by   mid(姓名,1,1)+'_';  
  Top

4 楼janezjtjdx(学习中)回复于 2006-03-04 18:08:59 得分 0

select   left([姓名],1)   as   姓名,count(left([姓名],1))   as   人数   from   TableName   group   by   left([姓名],1)     这个语句没错。Top

5 楼janezjtjdx(学习中)回复于 2006-03-04 18:15:35 得分 0

SELECT   Mid(姓名,1,1)+'_'     AS   姓   ,count(*)   as   人数  
  FROM   test1  
  group   by   mid(姓名,1,1)+'_';  
   
  有点错误,在SQLServer中没有mid,应该是substring才对。Top

6 楼janezjtjdx(学习中)回复于 2006-03-04 18:17:05 得分 0

嘿嘿,keiy()抱歉,我看错了。Top

7 楼ourlin(寒江独钓)回复于 2006-03-04 18:30:52 得分 5

cuteant兄正解Top

8 楼zffzff(zss)回复于 2006-03-04 18:33:04 得分 0

我用的是oracle数据库,运行上面语句,提示“invalid   column   name”。是上面语句不能用在oracle吗?Top

9 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 18:33:44 得分 60

呵呵,需要有一点小小的改动  
  SQL.Text   :=   'select   left([姓名],1)+''_''   as   姓名,count(left([姓名],1))   as   人数   from   TableName   group   by   left([姓名],1)';  
   
  主要是姓氏少了一个_符号Top

10 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 18:36:08 得分 0

哦,oracle啊,不早说,改一下:SUBSTR('Message',1,4)  
   
  'select   SUBSTR([姓名],1,1)+''_''   as   姓名,count(SUBSTR([姓名],1,1))   as   人数   from   TableName   group   by   SUBSTR([姓名],1,1)'Top

11 楼zffzff(zss)回复于 2006-03-04 18:44:55 得分 0

感谢cuteant(我这张旧船票还能否登上你的破船|涛声是否依旧)   !  
  'select   SUBSTR([姓名],1,1)+''_''   as   姓名,count(SUBSTR([姓名],1,1))   as   人数   from   TableName   group   by   SUBSTR([姓名],1,1)'  
  这句代码有错误!我改了一下,成功了!  
  'select   SUBSTR(姓名,1,1 as   姓名,count(SUBSTR(姓名,1,1))   as   人数   from   TableName   group   by   SUBSTR(姓名,1,1)'  
  多谢,多谢  
  Top

12 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 18:49:12 得分 0

你的意思是多了一个[]就错了,你是试过了的么?  
  本来用[]是为了避免字段名恰好是关键字的情况,因为我测试的时候是用的name做字段的,所以加了一个[],改为"姓名"以后就没有去掉,觉得多加也没关系的。Top

13 楼zffzff(zss)回复于 2006-03-04 18:55:02 得分 0

是,我试了,有[]和''-''就错,去了就好了Top

14 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 18:56:59 得分 0

哦,了解了,呵呵。Top

15 楼zffzff(zss)回复于 2006-03-04 18:57:51 得分 0

''_''的目的是为什么?是让它出现在姓后吗?如张_,还是别有用途?Top

16 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-04 19:00:50 得分 0

就是这个目的,因为你在顶楼里面要求的是“张_”而用SubStr(姓名,1,1)后显示的是“张”,少了一个“_”Top

17 楼zffzff(zss)回复于 2006-03-04 19:01:27 得分 0

谢谢!结贴!!!Top

相关问题

  • 如何写查询语句
  • 这样的查询语句如何写?
  • 如何写这样得查询语句
  • 这个查询语句该如何写!!!!!!!!!!!
  • 如何写这个查询语句?
  • 这种查询语句要如何写?
  • 这个查询语句如何写?
  • 这种查询语句该如何写?
  • 这个查询语句如何写?
  • 时间查询语句如何写???

关键词

  • 语句
  • oracle
  • sql
  • 姓名
  • substr
  • mid
  • group
  • left
  • 人数
  • count

得分解答快速导航

  • 帖主:zffzff
  • janezjtjdx
  • keiy
  • ourlin
  • cuteant

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo