CREATE TABLE [Transaction](
[TransactionID] [bigint] IDENTITY(1,1) NOT NULL,
[LocationID] [int] NOT NULL,
[KioskID] [int] NOT NULL,
[TransactionDate] [datetime] NOT NULL,
[TransactionType] [varchar](7) NOT NULL,
[Credits] [int] NOT NULL,
[StartingBalance] [int] NULL,
[EndingBalance] [int] NULL,
[SessionID] [int] NULL
);
請參閱本搗鼓樣本數據: Link to SQL Fiddle分配會議號碼一系列的交易
我試圖找出是否有一個會話編號分配序列的方法的交易在一次更新中。
「會話」定義爲以提款結束的存款和購買數量。甲會話具有由順序記錄:
- 1至n沉積物(TRANSACTIONTYPE = 'd'),
- 0到n購買(TRANSACTIONTYPE = 'P')和
- 0或1個取款(TRANSACTIONTYPE ='W')
具有相同的LocationID和KioskID。會話可以以0結餘或退出結束。首先沒有會話的存款啓動一個。只有P交易有餘額。對於D和W,它們是NULL。
LocationID,KioskID,SessionID必須是唯一的。
我真的希望有這樣做的SQL方式。我討厭不得不循環數以億計的交易來程序化地設置會話。
這是更多的業務邏輯的事情,我建議你在你的BL層實現。您可以通過檢查正在插入/更新的當前事務是否「關閉」會話並處理適當的操作來控制它。也許你可以找到有用的創建endsession timestatmp或標誌到你的會話表 – jean
我無法控制數據輸入。我從幾百個現有地點收集它。 – Metaphor
我已經向設備中的用戶提供了一個會話ID的請求,但最多隻有一年。 – Metaphor