SQL Server报表服务中的一些常见小问题
2008-08-14 09:54:51 来源:WEB开发网注意,我包含了where以便可以很容易地看到总列数。
为了解决上面的问题,我们要做的是在查询里包含总的值而不是从报表服务中获取这个值。
SELECT ISNULL(YEAR(Sales.SalesOrderHeader.OrderDate), '9999') AS YEAR,
ISNULL(Production.Product.Name, 'Total') AS Name,
SUM(Sales.SalesOrderDetail.LineTotal) AS Amt
FROM Sales.SalesOrderDetail
INNER JOIN Sales.SalesOrderHeader ON Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderID
INNER JOIN Production.Product ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
WHERE ( Production.Product.Name LIKE 'HL R%' )
AND ( YEAR(Sales.SalesOrderHeader.OrderDate) IN ( 2001, 2002 ) )
GROUP BY Production.Product.Name,
YEAR(Sales.SalesOrderHeader.OrderDate)
WITH CUBE
ORDER BY YEAR,
Name
CUBE操作器将为你提供一年的总值和产品名称。这个查询的问题是我们不能有一个“总”标签用于年和总值,因为年是整数。因此,在上面的查询中包括了一个随意的9999。
对于总值,你可能需要写一个简单的表达式,例如IIF(Fields!Year.Value="9999","Total",Fields!Year.Value)。
这时你将获得的与上面相同的输出。
接下来是编写一个表达式用于导航。
=SWITCH(Fields!Year.Value<>9999ANDFields!Name.Value<>"Total","SubReport")
在上面的表达式中,检查了年和名称总值,以便它不会导航到子报表。
- ››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表' (数...
更多精彩
赞助商链接