時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
每位SQL Server開發(fā)員都有自己的首選操作方法。我的方法叫做分子查詢。這些是由原子查詢組合起來的查詢,通過它們我可以處理一個(gè)表格。將原子組合起來,可以建立分子。當(dāng)然也會有限制(化學(xué)家所稱的化合價(jià)),但一般來說,這個(gè)原理還是適用的。
在本文中,我將探討這種策略的幾種變化。我從最基本的內(nèi)容開始(即最詳細(xì)的內(nèi)容),然后逐步深化。為讓你了解這種方法的靈活性,我會在不同層次使用幾種技巧。(警告:這并不是唯一的解決方法,我只是在討論一些可行的選擇。)
我從普遍使用的數(shù)據(jù)庫Northwind開始(雖然為了保留原貌,我把它復(fù)制到Northwind_New中,實(shí)際這才是我使用的數(shù)據(jù)庫。)在我的拷貝中,我做出這些重要的修改。
我刪除了復(fù)合主鍵,增加一個(gè)叫做PK的新列,并將其設(shè)為Identity列。
我增加了一個(gè)稱作ExtendedAmount的計(jì)算列。
以下為引用的內(nèi)容: USE [Northwind_New] |
列表A
列表A中包含建立這個(gè)新表格的新建(Create)語句。我用這個(gè)命令將它和值從原始表格中迅速移植出來:
INSERT INTO [Northwind_New].[dbo].[OrderDetails_New]
SELECT * FROM [Northwind_New].[dbo].[Order Details]
?
既然我有一個(gè)多行的表格,是時(shí)候開始實(shí)驗(yàn)了。(一旦新列ExtendedAmount被計(jì)算,其值會自動移植。)最初,我想用OrderID計(jì)算ExtendedAmount列的總數(shù)。我建立一個(gè)視圖,如列表B所示。
以下為引用的內(nèi)容: USE [Northwind_New] |
列表B
我每行得到一個(gè)OrderID,ExtendedAmount的列數(shù)得到總計(jì)。(稱之為OrderAmount,將航運(yùn),稅收等相加得到OrderTotal)。
我會在等式中引入一個(gè)表格UDF,如列表C所示。注意,我可以用兩種方法調(diào)用函數(shù):提交CustomerID將表格限定為那個(gè)顧客的訂單,或提交一個(gè)NULL獲得所有顧客訂單列表。如果我提交CustomerID,那么訂單列表就出現(xiàn)在OrderDate中;如果我提交NULL,列表就被分組并在CustomerID中由OrderDate排序。
以下為引用的內(nèi)容: set ANSI_NULLS ON -- ============================================= --try it with these: -- ================================================ 關(guān)鍵詞標(biāo)簽:SQL Server 相關(guān)閱讀
熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系 相關(guān)下載 人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法
|