擷取
對於.NET的開發者來說,相信以LINQ撈取資料的方式一定不陌生。
然而我有時總是得嘗試很多次才寫出想要的結果(唉,怪自己LINQ底子太差了),
所以想找一套工具能幫我SQL TO LINQ,藉此快速學習。
於是找到這套Linqer。

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

適用於SQL Server 2008
select b.* from sys.objects a inner join sys.columns b

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

本文轉貼自 : http://blog.csdn.net/Avan_Lau/archive/2010/03/02/5338205.aspx
1.  對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。
2.  應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:
   select id from t where num is null
   可以在num上設置預設值0,確保表中num列沒有null值,然後這樣查詢:
   select id from t where num=0

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

sql
假設有一table如下圖所示,
如果想要抓取table中第11~20筆的資料,靠fUserId是沒辦法的(跳號了),
而MS SQL又沒提供像FoxPro的recno() 這種抓取記錄筆數的function,這時得靠
通用資料表運算式 (CTE)了,
用法如下:

忙裡偷閒 發表在 痞客邦 留言(1) 人氣()

以往在撰寫報表程式時,時常需要大量的運用子查詢及聚合函數(SUM、AYG、COUNT),SQL寫的又臭又長,
例如計算總訂單量,會這樣寫:
SELECT a.SalesOrderID, a.ProductID, a.OrderQty
    ,(select sum(b.OrderQty) FROM Sales.SalesOrderDetail b
   
where a.SalesOrderID=b.SalesOrderID GROUP BY b.SalesOrderID) As 'Total'
   
,(select avg(b.OrderQty) FROM Sales.SalesOrderDetail b
   
where a.SalesOrderID=b.SalesOrderID GROUP BY b.SalesOrderID) AS 'Avg'
   
,(select COUNT(b.OrderQty) FROM Sales.SalesOrderDetail b
   
where a.SalesOrderID=b.SalesOrderID GROUP BY b.SalesOrderID) AS 'Count'
   
,(select min(b.OrderQty) FROM Sales.SalesOrderDetail b
   
where a.SalesOrderID=b.SalesOrderID GROUP BY b.SalesOrderID) AS 'Min'
FROM Sales.SalesOrderDetail a  FROM a.SalesOrderID in(43659,43664)
GROUP BY a.SalesOrderID, a.ProductID, a.OrderQty

無意中在微軟的技術網站裡發現這篇文章上述範例用OVER子句去寫,更簡潔了,並且能提高效率。
以上範例如用OVER子句來寫會是這樣 :

忙裡偷閒 發表在 痞客邦 留言(1) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。