我是SQL Server Reporting Services的新手,并且想知道执行以下操作的最佳方法:

  • 查询以获取流行ID列表
  • 对每个项目进行子查询以从另一个表获取属性

理想情况下,最终报告列应如下所示:

[ID] [property1] [property2] [SELECT COUNT(*)
                              FROM AnotherTable 
                              WHERE ForeignID=ID]

也许可以构建一个大型SQL查询来一次性完成所有操作,但我更希望将其分隔开。 是否推荐编写一种VB函数以对每一行执行子查询的方法? 谢谢你的帮助。

===============>>#1 票数:2 已采纳

我建议使用SubReport 您可以将SubReport放在表格单元格中。

===============>>#2 票数:0

最简单的方法是这样的:

select *,
 (select count(*) from tbl2 t2 where t2.tbl1ID = t1.tbl1ID) as cnt
from tbl1 t1

这是一个可行的版本(使用表变量):

declare @tbl1 table
(
 tbl1ID int,
 prop1 varchar(1),
 prop2 varchar(2)
)

declare @tbl2 table
(
 tbl2ID int,
 tbl1ID int
)

select *,
 (select count(*) from @tbl2 t2 where t2.tbl1ID = t1.tbl1ID) as cnt
from @tbl1 t1

显然,这只是一个原始示例-适用标准规则,例如不要选择*,等等。


从08年8月21日21:27更新:
@AlexCuse-是的,完全同意表演。

我开始使用外部联接来编写它,但是随后在他的示例输出中看到了计数并认为这是他想要的,如果表是外部联接的,则该计数将无法正确返回。 更不用说联接会导致您的记录成倍增加(tbl1中的1个条目与tbl2中的2个条目相匹配= 2个返回),这可能是意外的。

所以我想它真的可以归结为查询需要返回什么的细节。


从08年8月21日在22:07更新:
要回答您问题的其他部分-VB函数是否可行? 不,绝对不会。 不是为了这么简单。

函数的性能很差,返回集中的每一行都执行该函数。

如果要“分隔”查询的不同部分,则必须更像是存储过程。 构建一个临时表,执行查询的一部分并将结果插入表中,然后执行所需的任何其他查询并更新原始临时表(或插入更多临时表)。

===============>>#3 票数:0

根据您希望输出的外观,可以执行子报表,也可以对ID,property1,property2进行分组,然后将其他表中的项显示为明细项(假设您希望显示的不仅仅是计数)。

就像是

select t1.ID, t1.property1, t1.property2, t2.somecol, t2.someothercol
from table t1 left join anothertable t2 on t1.ID = t2.ID

@Carlton Jenke我想在您给出的示例中,您会发现外部联接的性能要优于相关子查询。 请记住,需要为每一行运行子查询。

  ask by Kalid translate from so

未解决问题?本站智能推荐:

1回复

如何使用SQL Reporting Services在存储过程中插入分页

我有一个报表查询,该查询具有许多记录,并且由于查询带来了所有结果然后在内存中进行分页而变得非常缓慢。 可以动态执行分页吗? 对于他来说,只带前n个记录,只有在用户访问报表的下一页之后,他才去银行带下一页。
1回复

SSRS参数未传递到查询中

我的报表中有两个参数@CustomerId和@SalesType,但是@CustomerId参数未正确传递到我的报表中,并导致错误必须声明标量变量“ @CustomerId”。 以下是发生这种情况的查询开头。 该参数是正确的情况,并且是多选参数。 为什么会这样呢? 如果我定义它
2回复

在Reporting Services中显示不确定数量的列

我有一个返回不确定数量的列的查询。 我如何在报告服务中使用它? 不知怎的,我生成@str并以这种方式使用。 我希望,我表达清楚:)提前谢谢..
2回复

SQL Server Reporting Services定价

我正在尝试了解客户端将报告服务报告部署到Web的定价要求。 他们是否必须购买任何特殊的Report Server许可证才能部署报告,或者是否包含在SQL 2005的标准版本中?
2回复

Reporting Services:使用过程作为dataSet?

我从Reporting Services开始。 我运行SQL 2008 R2 Standard。 Reporting Services已在同一服务器上运行。 我创建了一个存储过程,它将一个int作为参数。 在SQL Server中,运行此用户“A”没有问题。 我创建了一个与SQ
2回复

SQL Server Reporting Services 2005-如何将条件总计放入标题行

假设我有一个这样的表: 我想报告如下: 其中,调整后的总余额是发票的良好余额之和减去客户的不良总额。 调整后的余额是否可以在布局编辑器中使用表达式进行计算? 或者,还有更好的方法? (如果需要在布局编辑器中使用表达式,该怎么做?)
1回复

显示,修改然后存储数据的最佳方法? [关闭]

目前,我有几台以CSV文件输出数据的机器。 我将放置一个系统,以使用SSIS将此CSV文件导入SQL Server数据库。 数据驻留在SQL Server上后,我想将数据显示为报告(最好是SSRS),但是我遇到的麻烦是最终用户想要修改报告中显示的数据,然后重新上传将此完成的报告存入数据库。
1回复

SSRS查询设计器中的SQL SQL语句

因此,目前,我有一个SSRS报告,该报告使用查找功能比较不同的数据集,以比较2013年基准年(起始年)的当前年份。现在,我想更改这些SQL数据集,以生成另一个动态报告一年又一年。 因此,对于第一年,它会给我与去年相同的结果(因为它仍将2014年与2013年进行比较),然后第二年它将对每个月的2
1回复

PDF文件中没有活动的问题

我在下面的SQL代码中没有显示任何活动(对于实体AFFILIATE) 以同样的方式,我想要在程序@superproducttype中为参数之一编写代码,我们需要在报表中将每个超级产品类型(选中)显示为空白数据。 所以我的PDF文件看起来像这样: 超级产品类型在PDF文件中显
1回复

无法为查询创建字段列表[关闭]

我单击“查询字段”以查询共享数据集,并收到此错误: 这是我的查询: 我究竟做错了什么?