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

沒有留言:

Share with Facebook