2017-04-06 26 views
1

[1] enter image description here親愛的所有編碼器,請幫助我與此。我無法在sql server 2008中創建表,任何人都可以幫助我。相信我,我在全身心的衝擊後來到這裏。這裏是我的代碼:SQL查詢不能創建表與自動計算列

CREATE TABLE [dbo].[STransactions](
    [ATId] [int] IDENTITY(1,1) NOT NULL, 
    [ItemId] [nvarchar](max) NOT NULL, 
    [ADeposit] [int] NULL, 
    [ACredit] [int] NULL, 
    [ABalance] AS sum([ADeposit]-[ACredit]) 
) ON [PRIMARY] 

GO 

回答

1

你不需要sum()那個;只是減法。

CREATE TABLE [dbo].[STransactions](
    [ATId] [int] IDENTITY(1,1) NOT NULL, 
    [ItemId] [nvarchar](max) NOT NULL, 
    [ADeposit] [int] NULL, 
    [ACredit] [int] NULL, 
    [ABalance] AS ([ADeposit]-[ACredit]) 
) ON [PRIMARY] 

GO 

對於具有運行平衡喜歡你的圖片視圖:

create view dbo.STransactions_wBalance as 
    select 
     t.AtID 
    , t.ItemId 
    , t.ADeposit 
    , t.ACredit 
    , x.Balance 
    from dbo.STransactions t 
    cross apply (
    select Balance = sum(ADeposit-ACredit) 
    from dbo.STransactions as i 
    where i.ItemId = t.ItemId 
     and i.AtID <= t.AtID 
    ) x; 
go 

然後查詢視圖而不是表。

+0

感謝您的快速回復,但它不符合我的要求。我想要的是每筆交易的每一行都應該自動計算餘額,對於我插入的每一行中的借方 - 貸方總額,它不應該是單行的借方 - 貸方,而是整個上一行。我附上了這張照片,可否請您進一步指導我..對不起,如果我無法讓你理解。 –

+0

@DharamRai啊我明白了....你不能這樣做。你可以創建一個函數,併爲你的計算列使用該函數 - 但這不是一個好主意。無論如何,你將無法堅持或編入索引。我會建議創建一個滿足您的條件而不是計算列的「視圖」。 – SqlZim

+0

你能否請捐我如何做到這一點,我沒有做過任何:( –