求一查询统计的SQl语句
根据条件查询后再统计
现在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




