2005-11-09

五种提高SQL Server性能的方法

来源: 本站收集整理 作者:佚名 评论 0 条
 

SET @dtEndDate = DATEADD(DD, -1, CAST(CAST((MONTH(@dtEndDate) 1) AS

VARCHAR(2)) '/01/' CAST(YEAR(@dtEndDate) AS VARCHAR(4)) '

23:59:59' AS DATETIME))

SET @dtStartDate = DATEADD(MM, -1 * 12, @dtEndDate)

— Get all months into the first table

SET @i = 0

WHILE (@i < 12)

BEGIN

SET @dtDate = DATEADD(mm, -1 * @i, @dtEndDate)

INSERT INTO @tblMonths SELECT CAST(YEAR(@dtDate) AS VARCHAR(4)) '-'

CASE

WHEN MONTH(@dtDate) < 10

THEN '0' CAST(MONTH(@dtDate) AS VARCHAR(2))

ELSE CAST(MONTH(@dtDate) AS VARCHAR(2))

END AS sMonth

SET @i = @i 1

END

— Get all clients who had sales during that period into the "y" table

INSERT INTO @tblCustomers

SELECT DISTINCT

c.CustomerID,

c.CompanyName,

c.ContactName

FROM Customers c

INNER JOIN Orders o ON c.CustomerID = o.CustomerID

WHERE o.OrderDate BETWEEN @dtStartDate AND @dtEndDate

INSERT INTO @tblFinal

SELECT m.sMonth,

c.CustomerID,

c.CompanyName,

c.ContactName,

0

FROM @tblMonths m CROSS JOIN @tblCustomers c



UPDATE @tblFinal SET

mSales = mydata.mSales

FROM @tblFinal f INNER JOIN

(

SELECT c.CustomerID,

CAST(YEAR(o.OrderDate) AS VARCHAR(4)) '-'

CASE WHEN MONTH(o.OrderDate) < 10

THEN '0' CAST(MONTH(o.OrderDate) AS VARCHAR(2))

ELSE CAST(MONTH(o.OrderDate) AS VARCHAR(2))

END AS sMonth,

SUM(od.Quantity * od.UnitPrice) AS mSales

FROM Customers c

INNER JOIN Orders o ON c.CustomerID = o.CustomerID

INNER JOIN [Order Details] od ON o.OrderID = od.OrderID

WHERE o.OrderDate BETWEEN @dtStartDate AND @dtEndDate

GROUP BY

c.CustomerID,

CAST(YEAR(o.OrderDate) AS VARCHAR(4)) '-'

CASE WHEN MONTH(o.OrderDate) < 10

THEN '0' CAST(MONTH(o.OrderDate) AS VARCHAR(2))

ELSE CAST(MONTH(o.OrderDate) AS VARCHAR(2))

END

) mydata on f.CustomerID = mydata.CustomerID AND f.sMonth =

mydata.sMonth

SELECT f.sMonth,

f.CustomerID,

f.CompanyName,

f.ContactName,

f.mSales

FROM @tblFinal f

ORDER BY

f.CompanyName,

f.sMonth
共5页: 上一页 [1] [2] [3] [4] 5 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:SQL Server2000数据库文件损坏时如何恢复  
下一篇:实战MSSQL 2000数据库之MSSQL Server安装
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号