Delphi從資料表裡用SUM函式查詢的問題

2023-01-26 22:00:33 字數 4142 閱讀 8974

1樓:

總和沒有別名造成的

sql.clear;

sql.add('select ecode ,sum(lnum) as lnum from lend where ecode =:code');--這裡加一個別名就可以了

parameters.parambyname('code').value := combobox1.text;

datamoduleado.adoquery1.open;

edit1.text:=datamoduleado.adoquery1.fieldbyname('lnum').asstring;

2樓:眾口說車

在sql裡想要做聚合(求合、平均、統計)等,需要把select 段的欄位,放到group by 後

即 select ecode,sum(lnum) form lend where ecode=:code group by lnum,ecode

3樓:匿名使用者

不能這麼查詢,因為你用到了聚合函式(sum)。或者你可以用group by ecode來分組,或者用其它方式來查詢,比如:select ecode ,(select sum(lnum) from lend where ecode =條件) as lnum from lend where ecode=條件

希望對你有幫助。

在sql資料庫中,我用聚合函式sum,為什麼顯示運算元據型別varchar對於sum運算子無效啊?

4樓:匿名使用者

varchar資料型別不支援做聚合運算,你可以試試看修改資料表結構,把資料型別從varchar改為decimal(18,2)、int、float等可計算的資料型別,最好給個預設值0,如果儲存的時候還提示報錯,那一般是因為該欄位下有些記錄為空或者null了,建議先將該欄位所有空值改成0再修改欄位的資料型別。

5樓:匿名使用者

sum是對運算型別的使用,varchar是字串,所以無效。對varchar可以使用select 欄位+';' from 表 for xml path(''),剛學來的。

delphi 讀取資料庫中的資料並計算

delphi 關於sum的問題

6樓:匿名使用者

這種語句,不能用adoquery_salelist.execsql;執行sql語句,因為它適應於無結果輸出,如update,delete,而你這裡的查詢是要有結果的,這裡你只要用adoquery_salelist.open;或者adoquery_salelist.

active:=true;來執行sql語句就行了,下面的語句就對了

這是query1.open和query1.execsql的本質區別

7樓:壬瑜

把execsql換成openy就可以了

execsql不返回資料集,所以會提示欄位找不到

8樓:匿名使用者

你得保證你的sql語句查詢出來後有這個名字的欄位

你可以先在sql查詢分析器裡執行sql語句看看。

9樓:

'sumquantity'

是數值型,怎麼能用asstring呢?

關於delphi 用sql查詢問題

delphi sql 的資料相加問題

10樓:匿名使用者

我寫的那個觸發器問題太多所以刪了(汗。。)

其實樓下兩位兄弟說的很對,你把表合一張表

id 原始值 修改值 總積分 狀態 時間

原始值就不說了

修改值就是你每次操作時要扣除或增加的積分

總積分就是修改值和原始值的+ -值

時間就是你操作這條資料的系統時間

狀態(1或0):確定操作是增加積分還是扣除積分

當要增加一個會員的積分時,操作順序如下

修改值=增加或扣除的積分

原始值=原來的總積分

總積分=原始值加或減修改值

狀態=1

時間=系統時間

而這表也可以做到日誌表的作用

如果說的不對,請直接忽略

一下是我的測試資料:

--測試表

create table jfinfo

(id int,

ysz int, --原始值

xgz int, --修改值

zjf int, --總積分

zt bit, --狀態

rq datetime --操作時間)go

--觸發器

alter trigger update_trigger

on jfinfo

for update

as declare @zt bit

if update(xgz)

begin

set @zt=(select zt from inserted)

--如果有更新操作

if (((select count(*) from deleted)>0) and ((select count(*) from inserted)>0))

begin

if (@zt=1)--如果是增加

begin

update jfinfo set ysz=(select zjf from deleted),

zjf=(select zjf from deleted)+(select xgz from inserted),

rq=getdate()

endelse

begin

update jfinfo set ysz=(select zjf from deleted),

zjf=(select zjf from deleted)-(select xgz from inserted),

rq=getdate()

endend

endgo

--測試資料

insert into jfinfo values(1,10,0,10,1,getdate())

--測試結果

update jfinfo set xgz=1,zt=1 where id=1

select * from jfinfo

--親測有效,希望能幫到你

11樓:匿名使用者

其實沒有必要用兩張表,你要查詢的話直接

select sum(每次積分) from 表名 where 會員卡號=會員卡號

不就行了.

12樓:歸浦秋梵

這個沒必要用2張表,就是存明細資訊就可以了

具體要用到得時候再用聚合函式,比如

select sum(每次積分) from 表名 where 會員卡號=會員卡號

13樓:匿名使用者

你放總積分的那個表裡面的積分數值總是最後一次消費後的積分,所以每次消費只要加上當次消費的積分,再存回去就好了

update 表名 set [總積分]=[總積分]+當前消費積分 where [會員卡號]=當前會員卡號

14樓:九州樹

每次輸入時,如果提交成功,就改變兩個表,第一次更新當前表,第二次更新總積分表,即一次執行兩個簡單的函式而已,100分,太強大了。

delphi統計資料問題

15樓:叮噹貓武漢

adoquery1.sql.text := 'select sum(要合計的欄位名) as 臨時欄位名 from 表名';

adoquery1.active := true;

edit1.text := inttostr(adoquery1.fieldvalues['臨時欄位名']);

16樓:匿名使用者

1.增加彙總欄位

2.新起一個查詢,專查彙總

delphi能否實現用sql語句從sql的表中提取資料並進行運算

17樓:匿名使用者

通過select 語句 協同 聚合函式 可以實現提取資料並進行各種運算

excel資料表二維查詢,excel 資料表 二維查詢

是不是要輸入兩個資料,然後根據這兩個資料查出對應的值?用excel在二維表查詢資料 excel 2016 怎麼使用萬用字元查詢資料 你可以將另一維轉為列號,你的這個就是n 1,輸入列維2,列號就是3 公式引用 vlookup 行維,a j,n 1,false 把問題作為內容 郵件主題一定要包含 ex...

spring mvc用於從資料庫表裡獲取一列資料處理後存

是連在一起的麼?建議你把變數定義成全域性的,不要放在while迴圈裡面,如 專下 string bookid while res.next bookid res.getstring 1 而且connection 第一次已經屬 取了,也可以這樣定義了之後直接在下面進行使用,沒必要再寫一遍 spring...

php MYSQL中讀取資料表中的資料,為什麼其他欄位都能讀出資料,只有欄位的值總是讀不出來

先拿你的sql語句到mysql中去執行,看能否查到那個欄位的值,如果沒問題,那就再檢查php 邏輯對不對。確認一下這個欄位是不是空值 null或空字串 1.仔細檢視 的邏輯和拼寫是否正確 2.你將sql語句在mysql中執行一下,看結果是否讀取了那個欄位 3.此欄位的值為空 編碼問題 將mysql和...