2016-04-13 103 views
1

Nasıl üstesinden gelineceğimi bilmediğim bir sorun var. Gruplarımdaki bir alana dayalı olarak kristal raporlarıma filtre uygulamam gerekiyor. Sadece aynı grup içinde bu alanda iki farklı değer olup olmadığına göre grupları filtrelemek için ihtiyacım var. Mesela, bir konsey için bir mesele ve oy masam var. Sorunun adını ve oylama oranını içeren bir soruda oy başına bir giriş var (evet, hayır veya yok). Tabloyu isme göre gruplandıracağım ve grupları yalnızca evet ve hayır arasında bir oylamayla (yani, yoksun ve oybirliğiyle) bölünmüş olan sorunları gösterecek şekilde filtrelemek istiyorum. Bunu yapmayı nasıl yaparım?Gruplanmış kayıtları kristal raporlarda filtreleme

+0

size 2 formüller ile başka koşullar varsa oluşturmak ve sen gönderilmesi gerekiyor – Siva

+0

şartının bilgi veya alt bilgilere hem yerleştirmek gerekir kodun var Sorunun vücudunun bir parçası olarak denediniz. – ManoDestra

cevap

0

Gruplandırmanın en üst düzeyine beslediğiniz verilerin, hangi Oyların birden fazla farklı yanıtı olduğunu göstermek için önceden birleştirilmesi gerekir. Arka uç veri kaynağınız ne olursa olsun bunu yapmalısınız.

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) 

Birden adımları kullanarak veri çekme (ancak bu daha anlaşılır diyorsan, alt sorgular yapmak çekinmeyin) diye:

SQL'de yapmak olsaydı, örneğin tablolar verilen
select IssueID , Count(VoteResponse) as ResponseCount 
into #hasMultiple from (select distinct IssueID , VoteResponse from Votes) 

sonra Crystal beslemek için, bu geri gelirsin diye:

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