SQL 2008数据仓库可扩展性
2008-09-28 10:06:42 来源:WEB开发网如果没有GROUPING SETS ,那么你要获得这个结果就必须运行多个查询,或者使用UNION ALL 组合这些查询,以便获得一个结果集。而有了GROUPING SETS ,你的查询可以使用如下表达式:
SELECT D.CalendarYear, D.CalendarQuarter, T.SalesTerritoryCountry
, SUM(F.SalesAmount) AS SalesAmount
FROM dbo.FactResellerSales F
INNER JOIN dbo.DimTime D ON F.OrderDateKey = D.TimeKey
INNER JOIN dbo.DimSalesTerritory T ON
F.SalesTerritoryKey = T.SalesTerritoryKey
WHERE D.CalendarYear IN (2003,2004)
GROUP BY GROUPING SETS (
(CalendarYear, CalendarQuarter, SalesTerritoryCountry)
, (CalendarYear, CalendarQuarter)
, () )
ORDER BY D.CalendarYear, D.CalendarQuarter, T.SalesTerritoryCountry
Country
Canada Mexico USA
2007 Q1 1000 1000 5000 7000
2007 Q2 1000 1000 6000 8000
2007 Q3 1200 1300 7000 9500
2007 Q4 1300 1400 8000 10700
Grand Total: 35200
GROUPING SETS 所提供的简洁性和性能优势随着可分组数目的增加,越发明显。
MERGE
MERGE 语句允许你在一个Transact-SQL 语句中对一个表或视图执行多个数据库操纵语言(DML)进行操作(INSERT、UPDATE和DELETE)。目标数据表或视图与一个数据源联接起来,这些DML操作将在该联接的结果之上执行。MERGE 语句有三个WHEN 条件子句,使你可以对结果集中的一个给定记录执行一个专门的DML动作:
对于同时存在于目标表和源表中的每一条记录,WHEN MATCHED 条件子句允许你对目标表中的给定记录执行UPDATE或DELETE操作。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接