我試圖實現一個接口來翻轉訂單項的布爾狀態如何獲取聚合/分組查詢的組成行?
我被困在正確的方式來更新基礎行時,使用行集合是一個聚集。
表
declare @item table(
id int not null primary key,
amount money not null,
is_paid bit not null,
client varchar(10) not null)
insert into @item values
(1, 9.50, 0, 'Client A'),
(2, 11.50, 0, 'Client A'),
(3, 20.00, 1, 'Client B')
查詢
select sum(amount) as total_amount, is_paid, client
from @item
group by is_paid, client
結果
場景
現在說上面的結果是在一個網格中,如果is_paid = 0,在一個「支付」按鈕。
一行映射到一個或多個行的ID來進行更新點擊「支付」的結果。
我首先想到的是更新這樣的:
update @item
set is_paid=1
where client='Client A'
但是分崩離析(糾正我,如果我錯了)的「客戶端A」的附加行插入時間的分鐘界面顯示以及用戶按下「付款」的時間。
問題:由於這似乎是一個相當簡單的情況,處理它的典型方法是什麼?到目前爲止,我唯一能想到的就是將聚合/分組移至應用程序邏輯。
您是否擔心這樣一個事實,即附加行會無意中標記爲與其他付款一起故意標記爲已付款?但是如果額外的行能夠及時納入總量呢?用戶將如何去支付那些額外的東西來之前那些物品?一般問題是:當同一客戶有多於一件未付款項目時,如何將單個付款項目標記爲已付款? – 2011-03-09 08:48:21
感謝您的評論 - 我很想掌握真正的一般問題,正如您所說的。基本上,我只是不想採取不符合用戶期望的操作 - 所以如果他們點擊付款按鈕旁邊的$ 21.00即將發生。我想我只擔心你提到的第一部分,而我不是真的,我完全理解第二部分..我將我的解決方案添加爲解決了我主要擔心的問題的答案...我會繼續嘗試雖然。 – 2011-03-09 21:33:27