2016-04-13 3 views
1

Ich habe ein Problem, dass ich nicht sicher bin, wie zu überwinden. Ich muss meine Gruppen in Crystal Reports basierend auf einem Feld innerhalb der Gruppe filtern. Nicht nur, dass ich es brauche, um die Gruppen basierend darauf zu filtern, ob es zwei verschiedene Werte in diesem Feld innerhalb derselben Gruppe gibt. Zum Beispiel, ich habe eine Tabelle mit Fragen und Stimmen für einen Rat. Es gibt einen Eintrag pro Abstimmung zu einem Problem, das den Namen des Problems und die abgegebene Stimme enthält (entweder Ja, Nein oder Enthaltung). Ich werde die Tabelle nach Ausgabenamen gruppieren und die Gruppen so filtern, dass nur die Probleme mit einer Abstimmung zwischen Ja und Nein angezeigt werden (d. H. Keine Enthaltung und keine Einstimmigkeit). Wie gehe ich dabei vor?Filtern gruppierter Datensätze in Crystal Reports

+0

Sie 2 Formeln erstellen müssen mit, wenn sonst Bedingungen und legen sowohl in Details oder Fußzeilen wie pro Ihre Anforderung – Siva

+0

Sie die Post sollte Code, den Sie haben schon als Teil des Körpers deiner Frage versucht. – ManoDestra

Antwort

0

Die Daten, die Sie in die oberste Ebene der Gruppierung eingeben, müssen vorab aggregiert werden, um anzuzeigen, welche Stimmen mehrere unterschiedliche Antworten haben. Sie müssen dies in Ihrer Back-End-Datenquelle tun. Wenn ich es in SQL zu tun war, zum Beispiel der Tabellen angegeben:

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 [email protected] foreign key (VoterID) references dbo.Voters (VoterID) , 
IssueID int not null , 
constraint [email protected] foreign key (IssueID) references dbo.Issues (IssueID) , 
constraint [email protected] unique clustered (IssueID , VoterID) , 
VoteResponse varchar(16) null) 

Ich würde die Daten mit mehreren Schritten ziehen (aber das Gefühl frei Subqueries zu tun, wenn Sie denken, das ist verständlicher):

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

ich würde dann kommen zurück zu, dass, nach Crystal zu füttern:

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