對(duì)于自定義表單的數(shù)據(jù)表格,常常要對(duì)其中的數(shù)據(jù)進(jìn)行數(shù)據(jù)統(tǒng)計(jì),
我們推薦將腳本放在保存后執(zhí)行的腳本中進(jìn)行計(jì)算
下面有三種方法可以選擇
方法1,
統(tǒng)計(jì)出其中的數(shù)據(jù)列數(shù),然后用循環(huán)語句合計(jì)數(shù)值
declare @eform_data table
(c_data xml)
insert into @eform_data(c_data)
values('<rows>
<row>
<c_tab>
<drows>
<drow>
<c_num>18000</c_num>
<c_num>1000000</c_num>
<c_num>18000</c_num>
</drow>
</drows>
</c_tab>
</row>
</rows>')
select * from @eform_data
declare @count varchar(20)
declare @sum money
declare @tsql nvarchar(1000)
declare @xmldata xml
set @sum = 0
select @count = cast(c_data.query('count(/rows/row/c_tab/drows/drow/c_num)') as varchar(20))
from @eform_data
select @count
select @xmldata = c_data.query('(/rows/row/c_tab/drows/drow/c_num)')
from @eform_data
while @count <> 0
begin
select @tsql = 'select @sum = @sum + @xmldata.value(''(/c_num)['+@count+']'',''money'')'
EXECUTE sp_executesql @tsql,N'@xmldata xml,@sum money out',@xmldata,@sum out
set @count = @COUNT - 1
end
select @sum
方法2,直接用xml做統(tǒng)計(jì)運(yùn)算
這個(gè)方法雖然語句簡(jiǎn)潔,但是存在一個(gè)問題,就是當(dāng)數(shù)據(jù)合計(jì)超過百萬的時(shí)候,數(shù)據(jù)結(jié)果會(huì)變成科學(xué)計(jì)數(shù)法
導(dǎo)致轉(zhuǎn)換為money失敗
方法3
查詢出數(shù)據(jù)的xml,然后用字符串的運(yùn)算計(jì)算合集