第7章-高级查询.ppt

  1. 1、本文档共131页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章-高级查询

示例(续) 修改Product表中“4100037”产品的价格为55: UPDATE Product SET Price=55 WHERE ProductID = 4100037 再次同步数据: MERGE ProductNew AS d USING Product AS s ON s.ProductID = d.ProductID WHEN NOT MATCHED THEN INSERT( ProductID,ProductName,Price) VALUES(s.ProductID,s.ProductName,s.Price) WHEN MATCHED THEN UPDATE SET d.ProductName = s.ProductName, d.Price = s.Price; */131 示例(续) 从Product表中删除“410037”号产品: DELETE FROM Product WHERE ProductID = 4100037 再次同步数据: MERGE ProductNew AS d USING Product AS s ON s.ProductID = d.ProductID WHEN NOT MATCHED BY TARGET THEN INSERT( ProductID,ProductName,Price) VALUES(s.ProductID,s.ProductName,s.Price) WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN MATCHED THEN UPDATE SET d.ProductName = s.ProductName, d.Price = s.Price; */131 用MERGE语句实现汇总数据同步 假设为了做月报表的需要,创建了一个月销售汇总表。 希望每日将新的销售记录添加到每月汇总表中。在每个月的第1天晚上,只需将销售记录插入到销售汇总表中即可。 但从第2天晚上开始情况就不一样了,对于之前没有销售记录的数据,只需将该数据插入到销售汇总表中;对于之前有销售记录的数据,则需要更新该商品的汇总数据 */131 示例(续1) 本示例用MySimpleDB数据库中的Sales.SalesOrderHeader和Sales.SalesOrderDetail表中的数据来同步销售汇总数据。在MySimpleDB数据库中创建销售汇总表: CREATE TABLE Sales.MonthlyRollup( Year smallint NOT NULL, Month tinyint NOT NULL, ProductID int NOT NULL REFERENCES Production.Product (ProductID), QtySold int NOT NULL, PRIMARY KEY(Year,Month,ProductID)) */131 示例(续2) 设只对2003年8月的数据进行汇总,从该月的第1天开始。构建MERGE语句,产生2003年8月1日的销售汇总数据。 MERGE Sales.MonthlyRollup AS smr USING( SELECT soh.OrderDate, sod.ProductID, SUM(sod.OrderQty) AS QtySold FROM Sales.SalesOrderHeader soh JOIN Sales.SalesOrderDetail sod ON soh.SalesOrderID = sod.SalesOrderID WHERE soh.OrderDate = 2003-08-01 GROUP BY soh.OrderDate, sod.ProductID ) AS s ON (s.ProductID = smr.ProductID) WHEN MATCHED THEN UPDATE SET smr.QtySold = smr.QtySold + s.QtySold WHEN NOT MATCHED THEN INSERT (Year, Month, ProductID, QtySold) VALUES (DATEPART(yy, s.OrderDate), DATEPART(m, s.OrderDate), s.ProductID, s.QtySold); */131 示例(续3) 继续查看该月第2天的总结果。更新日期,继续运行下述代码(仿

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档