A. sqlSERVER的求和
select sum(m.AAA) from (select B.num*A.price as AAA wupin A,user BA where B.wupin_id=A.id and
B.name='张三')m
试一下,应该没有问题
B. sqlserver 利用sum求和时,sum时相同的id值加一次
你这个需求很不明确
如果只是按id来汇总,直接group by id就可以
如果想跳开相同AID,可以用distinct关键字跳开就行
C. 数据库中价格字段是varchar类型怎样在sql语句中使用sum函数计算总和
实现的方法和步骤如下:
1、首先,打开数据库连接客户端Navicat
Premium并创建一个新的表结构,其中age列有意设置为varchar,如下图所示,然后进入下一步。
D. 关于sql server 的sum()内嵌套子查询
SELECT
a.source
,session
,orders
,MAXsession
FROM
(SELECTsource,SUM(session)session,,SUM(orders)ordersFROMga_sourceGROUPBYsource)a
innerjoin(SELECTsource,MAX(session)MAXsessionFROMga_sourceGROUPBYsource)bona.source=b.source
E. sqlserver sum 运用
你把两张表写一起试下,select count(*) as 'n' from T_KSZX_2012 ,T_KSD_2012 where DQDM like '12%';
F. 在sqlserver 里实现类似sumif 的功能
select
[name]
,sum([value])as合计
from
b
groupby
[name]
G. sqlserver 中@sum应怎样局部变量声明
不需要@sum这个变量
declare @result float(8)
exec stu_info_pro '王明’, @result output
select @result '总成绩'
go
如果你一定要用
declare @result float(8)
declare @sum_result float(8)
exec stu_info_pro '王明’, @result output
set @sum_result=@result
select '总成绩'=@sum_result
H. 关于sqlserver分组求和的问题
这个问题主要是分组
我模拟了第一层你要分组的数据
分组sql
select substr(code,1,7), sum(a),sum(b),sum(c),sum(d) from test1 group by substr(code,1,7)
结果:
code sum(a) sum(b)sum(c) sum(d)
1 1010101 16 20 24 28
2 1010104 100 140 180 220
接下来通过结果集更新code 所在的记录
下面的过程就是重复的根据substr(code,起始位置,后移多少位) 来进行分组求和
更新。。
希望能帮到你
I. 关于SQLSERVER中 SUM() CHARINDEX() 等的现实案例问题,求帮助
1.首先,个人认为你的这个表设计不是很合理,范式高一点的话,水箱有一个基础信息表,水枪有一个基础信息表,然后俩者有一个关系中间表,这算标准模式吧.
再说即使按这种冗余设计的话,你也别把一个水箱对应的多个水枪搞一个字符保存数据吧,这个怎么看怎么别扭.比如你1号水箱对应了 1,3,4这3个水枪, 不要想着一条数据记录这种一对多的关系简单,变成1-1,1-3,1-4这样3条记录,也就不用这样痛苦了
2,既然你都这么干了,我提供一下解决办法吧,我对CHARINDEX() 这个函数用得少,但是大概看了一下,但是和你用的方式用的方式有点不一样,看你放不方便用了.
--首先使用CHARINDEX() 这个函数做一个分割函数,该函数只负责切割
--字符分割函数
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))
returns @temp table(F1 varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
----调用select * from dbo.f_splitstr('1,3,4',',')
你会得到1,3,4这样的一个结果集
---然后就好办了,你需要的东西变成了下面这样
--select sum(WR_WEIGHT) from TBL_WATER_RECORD where WR_GUN_NUMBER in(
-- select * from dbo.f_splitst(
-- select WC_GUN_NUM from TBL_WATERCAN where WC_WATERCAN_NUM = 1,',')
--)
--本来到这里就结束了,但是这里引发了另外一个问题,上面这句在f_splitst函数中直接使用子查询,
--貌似有查询优先级的问题,它没有先查询出结果
--而是把这句子查询做为一个参数传入了f_splitst,所以行不通
--那么就使用参数结构吧,最后就变成这样了
declare @gun_num as varchar(1000)
select @gun_num=WC_GUN_NUM from TBL_WATERCAN where WC_WATERCAN_NUM= 1
select sum(WR_WEIGHT) from TBL_WATER_RECORD where WR_GUN_NUMBER in(
select * from dbo.f_splitstr(@gun_num,',')
)
--说真的,这次我被恶心了一次,感觉这不是最优的解决办法吧,但是勉强能用吧,不想伤神了.