WEB开发网
开发学院数据库MSSQL Server SQL Server报表服务中的一些常见小问题 阅读

SQL Server报表服务中的一些常见小问题

 2008-08-14 09:54:51 来源:WEB开发网   
核心提示: 注意,我包含了where以便可以很容易地看到总列数,SQL Server报表服务中的一些常见小问题(5),为了解决上面的问题,我们要做的是在查询里包含总的值而不是从报表服务中获取这个值,=SWITCH(Fields!Year.Value<>9999ANDFields!Name.

注意,我包含了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)。

这时你将获得的与上面相同的输出。

SQL Server报表服务中的一些常见小问题

接下来是编写一个表达式用于导航。

=SWITCH(Fields!Year.Value<>9999ANDFields!Name.Value<>"Total","SubReport")

在上面的表达式中,检查了年和名称总值,以便它不会导航到子报表。

上一页  1 2 3 4 5 

Tags:SQL Server 报表

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接