2015-10-07 3 views
0

Я хочу, чтобы выбрать несколько значений из трех таблиц с агрегатной функцией, но без дублей в одном из столбцов, например:Как выбрать различные значения после левого внешнего соединения операции

select t3.ValueDesc as FeatureType, 
     count(t2.Strategic) as TotalCount 
     ,t2.RequestID,t1.StoryID --these are not needed, but put for better vision 

from tblRequests t2 
left outer join (select * from tblAgileMultiDD where Type=18) t3 
    on t3.FormulaValue = t2.Strategic 
left outer join tblAgileStory t1 
    on t1.Feature = t2.RequestID 

where t2.RequestID > 0 
and t1.DemoStatus = 1 

group by t3.ValueDesc 
    ,t2.RequestID, t1.StoryID --these are not needed but put for better vision 
order by t3.ValueDesc 

И тогда он возвращает мне что-то как это:

FeatureType  TotalCount RequestID StoryID 
Protect Base 1   311   1629 
Protect Base 1   311   1630 
Protect Base 1   312   1631 
Protect Base 1   312   1637 
New Market  1   313   1640 
New Market  1   313   1645 

И если я закомментируйте строки с "t2.RequestID, t1.StoryID", это дает мне результат:

FeatureType  TotalCount 
Protect Base 4   
New Market  2 

Итак, для каждой уникальной комбинации RequestID и StoryID возвращается новая строка. Как заставить его возвращать новую строку только для каждого уникального RequestID независимо от StoryID? Поэтому я хочу этот запрос, чтобы привести, как это:

FeatureType  TotalCount 
Protect Base 2   (for RequestID = 311, 312) 
New Market  1   (for RequestID = 313) 

Ввод слова «отличие» в начале не вступает в силу на нем. Можете ли вы мне помочь?

+0

Что относительно count (Distinct t2.Strategic), или, скорее, считать разным на основе requestID –

+0

Я думаю, вы уже нашли решение: удалите 't2.RequestID' и' t1.StoryID' из ваших 'SELECT' и Предложение GROUP BY. –

ответ

0
select distinct FeatureType,TotalCount from (
    select t3.ValueDesc as FeatureType, 
      count(t2.Strategic) as TotalCount 
      ,t2.RequestID 
      -- ,t1.StoryID --these are not needed, but put for better vision 

    from tblRequests t2 
    left outer join (select * from tblAgileMultiDD where Type=18) t3 
     on t3.FormulaValue = t2.Strategic 
    left outer join tblAgileStory t1 
     on t1.Feature = t2.RequestID 

    where t2.RequestID > 0 
    and t1.DemoStatus = 1 

    group by t3.ValueDesc 
     ,t2.RequestID 
      -- , t1.StoryID --these are not needed but put for better vision 
) as T 

заказ по t3.ValueDesc

вы могли бы попробовать это.

Смежные вопросы