2007年7月20日 星期五
partition by field order by field
存進資料庫時,之前為了弄出序號般的東西,通常會使用 identity 的欄位。
這是直接寫入資料庫的。通常結合 primary key ,於設計時期就規劃好這樣的欄位。
但,有時,常常,需要在UI顯示給使用者的序號,是不用寫入資料庫的。
如
訂單主檔
訂單編號 (primary key)
客戶編號
建立日期
訂單明細檔
訂單編號
產品名稱
數量
序號 (該訂單明細的明細流水號,由1開始)
像這樣的序號欄號,是有規則的,不必寫到資料庫。
以前在UI要呈現這樣的序號,可以使用UI的技巧。有時需要多一點的運算。
現在,SQL Server 2005 提供了這樣的語法層級上的支援
如
select m.BillNo, d.ProductName, d.Qty1, d.UnitQty, d.UnitPrice, NetAmount, row_number() over (partition by d.billNo order by d.billNo) as rowNum
from Einvoice.dbo.invoice m
inner join Einvoice.dbo.invoiceDetail d on m.BillNo = d.billNo
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言