CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

求一查询统计的SQl语句

楼主pgwron2006(提问)2006-02-09 11:35:39 在 MS-SQL Server / 疑难问题 提问

根据条件查询后再统计  
   
  现在2张表  
  表a  
  id       type         class         name       money         wmoney       no  
  表b  
  id       aid         name  
  其中表a的ID和表b的aid关联,no为int型,要根据type,class和no条件like查询2个表,都为空的时候就是查询所有的记录,最后加一个统计行..统计   money,和Wmoney     高手们!!谢谢了!!我写了2个小时了..没写出来..5555555555 问题点数:100、回复次数:23Top

1 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-02-09 11:45:38 得分 5

要根据type,class和no条件like查询2个表  
  什么意思???Top

2 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-02-09 11:46:40 得分 0

--还有你要什么样的结果??描述下!Top

3 楼zhaoanle(zhao)回复于 2006-02-09 11:46:43 得分 0

不懂Top

4 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2006-02-09 11:47:34 得分 5

查询的结果集需要包括那些字段?Top

5 楼samfeng_2003(凤翼天翔)回复于 2006-02-09 11:49:53 得分 85

楼主不用着急,可以给一些数据出来,然后列表表示自己想达到的结果,大家会帮你的!Top

6 楼pgwron(情伤无痕)回复于 2006-02-09 11:51:07 得分 0

 
  再查询时有3个文本框分别是type,class和no这3个,根据他们的内容来查询,但也可以不填..如果哪一个没填就忽略掉,好像like可以模糊查询..Top

7 楼qizi82()回复于 2006-02-09 11:52:26 得分 0

拼串,用程序或者存储过程控制一下Top

8 楼pgwron(情伤无痕)回复于 2006-02-09 11:57:07 得分 0

表a  
  id       type         class         name       money         wmoney       no  
  1         性质1       类别1         名称1       100               200           2        
  2         性质2       类别2         名称2       150               200           2        
  表b  
  id       aid         name  
    1           2         名称2  
   
  最后查询结果需求字段:最后要加一个统计行  
    表1.name           表1.money                   表1.wmoney           表2.name  
   
  统计                     sum(表1.money)         sum(表1.wmoney)  
   
   
   
  Top

9 楼pgwron(情伤无痕)回复于 2006-02-09 12:01:01 得分 0

查询的时候可以填写class,name,no3个条件,但也可以不填,填了的就要进行条件匹配Top

10 楼pgwron(情伤无痕)回复于 2006-02-09 12:02:32 得分 0

我急死了..这几天在做报表...第一次写水晶报表..很多不懂的,那边的问题也每人回答...自己顶了3次...最后只好开小号自己顶.唉Top

11 楼samfeng_2003(凤翼天翔)回复于 2006-02-09 12:55:54 得分 0

create   table   t_a  
  (id   int,type   varchar(20),class   varchar(20),name   varchar(20),money   int,wmoney   int,no   int)  
   
  insert   t_a  
  select   1,'性质1','类别1','名称1',100,200,2   union   all        
  select   2,'性质2','类别2','名称2',150,200,2  
   
  create   table   t_b  
  (id   int,aid   int,name   varchar(20))  
   
  insert   t_b  
  select   1,2,'名称2'  
   
  select   a.name,a.money,a.wmoney,b.name  
  from   t_a   a   left   join   t_b   b   on   a.id=b.aid  
  union   all  
  select   '统计',sum(money),sum(wmoney),null   from   t_a  
   
  drop   table   t_a,t_b  
   
  name                                   money               wmoney             name                                    
  --------------------   -----------   -----------   --------------------    
  名称1                                     100                   200                   NULL  
  名称2                                     150                   200                   名称2  
  统计                                       250                   400                   NULL  
   
  (所影响的行数为   3   行)Top

12 楼pgwron(情伤无痕)回复于 2006-02-09 13:24:28 得分 0

samfeng_2003(凤翼天翔)大哥   ...我这个还需要加入查询条件的啊..  
  可以根据class,name,no       3个字段查询  
  select   a.name,a.money,a.wmoney,b.name  
  from   t_a   a   left   join   t_b   b   on   a.id=b.aid   where   a.class   like   '%'+class+'%'   and   a.name   like   '%'+name+'%'   and   a.no   like   '%'+no+'%'  
  我这样但是当传进去的class,name,no,为空时..查不到数据,我希望的是,如果哪个字段为空,就任何内容都查Top

13 楼samfeng_2003(凤翼天翔)回复于 2006-02-09 13:36:59 得分 0

当全为空的时候  
  create   table   t_a  
  (id   int,type   varchar(20),class   varchar(20),name   varchar(20),money   int,wmoney   int,no   varchar(20))  
   
  insert   t_a  
  select   1,'性质1','类别1','名称1',100,200,'2'   union   all        
  select   2,'性质2','类别2','名称2',150,200,'2'  
   
  create   table   t_b  
  (id   int,aid   int,name   varchar(20))  
   
  insert   t_b  
  select   1,2,'名称2'  
   
  declare   @s1   varchar(20),@s2   varchar(20),@s3   varchar(20)  
   
   
  select   a.name,a.money,a.wmoney,b.name  
  from   t_a   a   left   join   t_b   b   on   a.id=b.aid  
  where    
  a.class   like   '%'+case   when   @s1   is   null   then   ''   else   @s1   end+'%'  
    and   a.name   like   '%'+case   when   @s2   is   null   then   ''   else   @s2   end+'%'  
    and   a.no   like   '%'+case   when   @s3   is   null   then   ''   else   @s3   end+'%'  
  union   all  
  select   '统计',sum(money),sum(wmoney),null   from   t_a   a  
  where    
  a.class   like   '%'+case   when   @s1   is   null   then   ''   else   @s1   end+'%'  
    and   a.name   like   '%'+case   when   @s2   is   null   then   ''   else   @s2   end+'%'  
    and   a.no   like   '%'+case   when   @s3   is   null   then   ''   else   @s3   end+'%'  
   
  drop   table   t_a,t_b  
   
  name                                   money               wmoney             name                                    
  --------------------   -----------   -----------   --------------------    
  名称1                                     100                   200                   NULL  
  名称2                                     150                   200                   名称2  
  统计                                       250                   400                   NULL  
   
  (所影响的行数为   3   行)Top

14 楼samfeng_2003(凤翼天翔)回复于 2006-02-09 13:38:05 得分 0

当@s1=1的时候  
  name                                   money               wmoney             name                                    
  --------------------   -----------   -----------   --------------------    
  名称1                                     100                   200                   NULL  
  统计                                       100                   200                   NULL  
   
  (所影响的行数为   2   行)Top

15 楼pgwron(情伤无痕)回复于 2006-02-09 13:53:09 得分 0

.........我怎么还是查不出来啊Top

16 楼samfeng_2003(凤翼天翔)回复于 2006-02-09 13:54:36 得分 0

你把我的数据打到查询分析器里,仔细看看吧Top

17 楼pgwron(情伤无痕)回复于 2006-02-09 13:57:38 得分 0

NO是int型的..我只要带这个进去like就查不出来...一删掉就出来了..唉Top

18 楼pgwron(情伤无痕)回复于 2006-02-09 14:16:18 得分 0

samfeng_2003(凤翼天翔)   大哥..我试过了..直接用like也能出来..但只要加入了int型的就不行了..Top

19 楼pgwron(情伤无痕)回复于 2006-02-09 14:28:15 得分 0

convert(varchar,no)   like     '%'+@no+'%'也不行Top

20 楼Tomscoy(无花无叶)回复于 2006-02-09 14:30:08 得分 0

^-^要不楼主用cast(字段,char(8))进行查询?Top

21 楼Tomscoy(无花无叶)回复于 2006-02-09 14:31:08 得分 5

^-^要不楼主用cast(字段   as   char(8))进行查询?  
  HOHO  
  Top

22 楼pgwron(情伤无痕)回复于 2006-02-09 14:43:46 得分 0

不行啊.一样不行Top

23 楼pgwron(情伤无痕)回复于 2006-02-09 15:31:59 得分 0

我知道了Top

相关问题

  • 请教查询统计的SQL语句???
  • 50分请教一个统计查询的sql语句
  • SQL查询语句
  • Sql 查询语句
  • SQL查询语句
  • sql语句查询
  • sql查询语句
  • sql查询语句
  • SQL查询语句
  • Sql查询语句

关键词

  • 查询
  • 字段
  • wmoney
  • 统计
  • 表
  • aid
  • money
  • 名称
  • 性质
  • 条件

得分解答快速导航

  • 帖主:pgwron2006
  • zlp321002
  • libin_ftsafe
  • samfeng_2003
  • Tomscoy

相关链接

  • SQL Server类图书

广告也精彩

反馈

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