2016-04-13 5 views
1

У меня проблема, что я не уверен, как победить. Мне нужно отфильтровать мои группы в хрустальных отчетах на основе поля внутри группы. Мало того, что мне нужно это, чтобы фильтровать группы на основе, если в этой области есть две разные значения в пределах одной группы. Например, скажем, у меня есть таблица вопросов и голосов для совета. Существует одна запись на голосование по вопросу, содержащему имя проблемы и подачу голоса (либо «да», «нет», либо «воздержаться»). Я буду группировать таблицу по имени проблемы, и я хочу отфильтровать группы, чтобы показать только проблемы с разделением голосов между да и нет (т. Е. Не воздерживается, а не единогласно). Как мне это сделать?Фильтрация сгруппированных записей в отчетах о кристаллах

+0

вам нужно создать 2 формулы с If Else условия и место как в деталях или колонтитулы согласно вашему требованию – Siva

+0

вы должны размещать кода, который у вас есть пробовал уже как часть тела вашего вопроса. – ManoDestra

ответ

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 [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) 

Я бы вытащить данные с помощью нескольких шагов (но не стесняйтесь делать подзапросы, если вы думаете, что это более понятно):

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

я затем присоединиться обратно к тому, чтобы питаться Кристл:

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 
Смежные вопросы