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,',')
)
--說真的,這次我被惡心了一次,感覺這不是最優的解決辦法吧,但是勉強能用吧,不想傷神了.