對(duì)應(yīng)的,Oracle中比較常用的方法: SELECT [columns] FROM [table] FOR UPDATE [NOWAIT]
MSSQLServer中的集計(jì)運(yùn)算 接觸了一個(gè)新的系統(tǒng),中間運(yùn)用了很多集計(jì)運(yùn)算,卻沒(méi)有用平常使用的SUM,COUNT函數(shù),而是用了一個(gè)GROUP BY的關(guān)鍵字WITH ROLLUP/CUBE,加上這個(gè)關(guān)鍵字,將會(huì)對(duì)分組后的數(shù)據(jù)按照層次進(jìn)行集計(jì)運(yùn)算,并將數(shù)據(jù)直接付在所集計(jì)數(shù)據(jù)之后,對(duì)于報(bào)表數(shù)據(jù)的處理有很大的幫助。對(duì)于ROOLUP和CUBE的區(qū)別在于,ROLLUP按分組層次來(lái)運(yùn)算,而CUBE是按所有可能的組合來(lái)運(yùn)算。下面給個(gè)例子,數(shù)據(jù)如下: Item Color Quantity -------------------- -------------------- -------------------------- Table Blue 124 Table Red 223 Chair Blue 101 Chair Red 210 使用集計(jì)運(yùn)算SQL,中間的CASE語(yǔ)句是為了去掉集計(jì)產(chǎn)生的NULL值,可以去掉看一下有什么區(qū)別。 SELECT CASE WHEN (GROUPING(Item) = 1) THEN ‘ALL‘ ELSE ISNULL(Item, ‘UNKNOWN‘) END AS Item, CASE WHEN (GROUPING(Color) = 1) THEN ‘ALL‘ ELSE ISNULL(Color, ‘UNKNOWN‘) END AS Color, SUM(Quantity) AS QtySum FROM Inventory GROUP BY Item, Color WITH ROLLUP 產(chǎn)生結(jié)果集: Item Color QtySum -------------------- -------------------- -------------------------- Chair Blue 101.00 Chair Red 210.00 Chair ALL 311.00 Table Blue 124.00 Table Red 223.00 Table ALL 347.00 ALL ALL 658.00 如果使用WITH CUBE,那么結(jié)果集還會(huì)多出下面兩行記錄 ALL Blue 225.00 ALL Red 433.00 注意觀察,紅色的部分,是ROLLUP對(duì)Color分組層進(jìn)行運(yùn)算的結(jié)果,綠色部分則是對(duì)Item層的,而CUBE會(huì)將Color與Item的任意一種組合都進(jìn)行運(yùn)算。是不是很方便呢。
數(shù)據(jù)庫(kù)中的Collate Collate關(guān)鍵字指定了數(shù)據(jù)庫(kù)使用的效驗(yàn)方式。簡(jiǎn)單來(lái)說(shuō),就是數(shù)據(jù)的比較規(guī)則,比如大小寫(xiě)敏感,長(zhǎng)度敏感等等,Collate可以在建數(shù)據(jù)庫(kù)、表、甚至在SQL實(shí)行時(shí)指定。這次遇到的問(wèn)題是因?yàn)楸容^2個(gè)數(shù)據(jù)庫(kù)中表字段,但2個(gè)數(shù)據(jù)庫(kù)使用的默認(rèn)Collate不一樣,導(dǎo)致類(lèi)型轉(zhuǎn)換錯(cuò)誤,比較失敗,SQL報(bào)錯(cuò)。通常不太會(huì)注意這類(lèi)問(wèn)題,但是遇到導(dǎo)入或者分布式的數(shù)據(jù)庫(kù)時(shí)或許會(huì)出現(xiàn)問(wèn)題。 下面附帶查詢默認(rèn)數(shù)據(jù)庫(kù)以外的SQL語(yǔ)句 SELECT 字段名 FROM [數(shù)據(jù)庫(kù)名].[表所有者名].表名 比如:SELECT TA.C1, TB.C2 FROM TableA TA , otherdb.dbo.TableB TB 其中,表所有者名可以省略,變?yōu)閛therdb..TableB,當(dāng)然,當(dāng)前連接用戶要有訪問(wèn)otherdb數(shù)據(jù)庫(kù)的權(quán)限。