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
1
A
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
Sie 2 Formeln erstellen müssen mit, wenn sonst Bedingungen und legen sowohl in Details oder Fußzeilen wie pro Ihre Anforderung – Siva
Sie die Post sollte Code, den Sie haben schon als Teil des Körpers deiner Frage versucht. – ManoDestra