过滤水晶报告中的分组记录

时间:2016-04-13 14:01:42

标签: crystal-reports report crystal-reports-2013

我有一个问题,我不确定如何克服。我需要根据组内的字段过滤水晶报表中的我的组。不仅如此,我还需要根据同一组中此字段中是否存在两个不同的值来过滤组。例如,假设我有一个问题表,并为理事会投票。在包含问题名称和投票的问题上,每个投票有一个条目(是,否或弃权)。我将按照问题名称对表格进行分组,并且我想过滤这些组以仅显示在是和否之间进行投票分割的问题(即没有弃权而不是一致)。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您需要预先汇总您进入分组顶级的数据,以便显示哪些投票有多个不同的回复。无论您的后端数据源是什么,您都需要这样做。如果我在SQL中这样做,例如,给定表:

create table dbo.Issues (
IssueID int identity(1,1) not null ,
constraint pkc_Issues primary key clustered ( IssueID ) ,
IssueText varchar(1000) )

--Note - not putting anything unique on VoterName because there may be 2 Joe Blows in the voter population.
create table dbo.Voters (
VoterID int identity(1,1) not null ,
constraint pkc_Voters primary key clustered ( VoterID ) ,
VoterName varchar(512) not null ) )

create table dbo.Votes (
VoteID int identity(1,1) not null ,
constraint pkn_Votes primary key nonclustered ( VoteID ) ,
VoterID int not null ,
constraint fk_VoterID@Votes foreign key ( VoterID ) references dbo.Voters ( VoterID ) ,
IssueID int not null ,
constraint fk_IssueID@Votes foreign key ( IssueID ) references dbo.Issues ( IssueID ) ,
constraint uci_IssueID_VoterID@Votes unique clustered ( IssueID , VoterID ) ,
VoteResponse varchar(16) null )

我使用多个步骤提取数据(但如果您认为更容易理解,请随意做子查询):

select IssueID , Count(VoteResponse) as ResponseCount
into #hasMultiple from (select distinct IssueID , VoteResponse from Votes)

然后我再加入到那里,为Crystal提供信息:

select dbo.Issues.IssueID ,
dbo.Issues.IssueText ,
cast(case when #hasMultiple.ResponseCount > 1 then 1 else 0 end as bit) as HasMultiple ,
dbo.Votes.VoteID ,
dbo.Votes.VoterID ,
dbo.Votes.VoteResponse ,
dbo.Voters.VoterName
from dbo.Issues
inner join dbo.Votes
on dbo.Issues.IssueID = dbo.Votes.IssueID
left join dbo.Voters
on dbo.Votes.VoterID = dbo.Voters.VoterID
left join #hasMultiple
on dbo.Issues.IssueID = #hasMultiple.IssueID