第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Sql Server 中的計(jì)算列

Sql Server 中的計(jì)算列

慕姐8265434 2018-07-23 07:08:37
請問能不能在計(jì)算列中使用Sum()函數(shù)計(jì)算出另一個(gè)表中字段的合計(jì)比如有以下兩個(gè)表A和B, B.ParentId 的外鍵是A.Id,A.Num是計(jì)算列,我想在A.Num 列中寫一個(gè)公式,自動得出B中所有ParentId=A.Id的Num字段的總和。 表A: Id Num 表B: Id ParentId Num
查看完整描述

3 回答

?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

計(jì)算列不能引用其他表的列,但是可以通過函數(shù)來實(shí)現(xiàn),先建立下面這個(gè)函數(shù):
create function DingXue(@id int)
??? returns int
as
begin
??? declare @sum int
??? select @sum=sum(num) from b where?id=@id
??? return @sum
end

然后創(chuàng)建表:
create table A(Id int identity(1,1), Num as dbo.DingXue(Id), tt int)
create table B(Id int identity(1,1), ParentId int, Num int)

測試如下:
insert into A(tt) values(1)
insert into B(ParentId,Num) values(1,1234)
insert into B(ParentId,Num) values(1,4321)
select * from A
select * from B

=================

A表里的tt只是為了增加A表里的記錄 :)

======================

其實(shí)我一直覺得數(shù)據(jù)庫里沒有必要存放計(jì)算列,因?yàn)椤坝?jì)算”這種事情,讓程序來做會更簡單,非要數(shù)據(jù)庫來做,也可以直接使用 select a.id, sum(b.num) as num from a inner join b on a.id=b.parentid 這種方式來實(shí)現(xiàn)

另外,也可以在B表加觸發(fā)器來實(shí)現(xiàn),介理相對于函數(shù)來說,我對觸發(fā)器的抵觸情緒更嚴(yán)重一些,呵呵,所以這里提供函數(shù)方式的實(shí)現(xiàn)


查看完整回答
反對 回復(fù) 2018-07-25
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

update num =d.total  from  c inner join  (select a.aid, sum(b.num) as total from a inner join b on a.aid=b.aid group by a.aid) d on c.id = d.id

查看完整回答
反對 回復(fù) 2018-07-25
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

建議不要這樣使用,如果你非要這樣用,可以試著自己寫一個(gè)自定義函數(shù)

查看完整回答
反對 回復(fù) 2018-07-25
  • 3 回答
  • 0 關(guān)注
  • 1454 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號