Я передаю в две даты и нужно сгруппировать по результатам этими двумя датами, но не может сделать это, как я получаю ошибкуКак сгруппировать по внешним ссылкам или любым другим способом?
Msg 164, Level 15, State 1, Line 24 Каждая GROUP BY выражения должен содержать , содержащий по крайней мере один столбец, который не является внешней ссылкой.
запрос выглядит следующим образом:
declare @sd datetime ='2012-07-01 00:00:00.000' ,
@ed datetime ='2012-09-30 00:00:00.000' ;
select @sd,@ed,
count(i.id)as count,
sum(case when oi.rating <50 then 1 else 0 end) as unfav,
sum(case when oi.Rating =50 then 1 else 0 end) as neu,
sum(case when oi.Rating >50 then 1 else 0 end) as fav,
avg(oi.Rating)as 'Av Rating'
from Items i (nolock)
inner join ItemOrganisations oi (nolock) on i.ID= oi.ItemID
inner join Lookup_ItemTypes it (nolock) on it.ID = i.ItemTypeID
inner join Batches b (nolock) on b.ID=i.BatchID
inner join Lookup_ItemStatus lis (nolock) on lis.ID = i.StatusID
inner join Lookup_BatchStatus lbs (nolock) on lbs.ID = b.StatusID
inner join Lookup_BatchTypes bt on bt.id = b.Typeid
where lbs.Name = 'Completed by Analyst' or lbs.Name='Delivered/Imported into Neptune Online'
and lis.Name = 'Complete'
and i.IsRelevant = 1
and bt.Name = 'Live'
group by @sd,@ed
having i.OverrideDate between @sd and @ed
Если я не группируют по это результат я получаю, что неправильно:
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 1 0 0 1 55
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 7 1 0 1 50
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 7 1 0 0 20
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 1 0 0 0 NULL
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 8 1 0 6 66
2011-01-01 00:00:00.000 2011-01-31 00:00:00.000 1 1 0 0 10
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 1 0 0 1 55
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 7 1 0 1 50
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 7 1 0 0 20
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 1 0 0 0 NULL
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 8 1 0 6 66
2011-02-01 00:00:00.000 2011-02-28 00:00:00.000 1 1 0 0 10
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 1 0 0 1 55
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 7 1 0 1 50
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 7 1 0 0 20
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 1 0 0 0 NULL
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 8 1 0 6 66
2011-03-01 00:00:00.000 2011-03-31 00:00:00.000 1 1 0 0 10
2011-04-01 00:00:00.000 2011-04-30 00:00:00.000 1 0 0 1 55
2011-04-01 00:00:00.000 2011-04-30 00:00:00.000 7 1 0 1 50
2011-04-01 00:00:00.000 2011-04-30 00:00:00.000 7 1 0 0 20
Там нет никаких оснований для этого, пожалуйста, объясните, какой результат вы ожидаете, и что ваша логика для группировки результатов – jazzytomato
см edit.thanks – Xerxes
Вы уверены, что эти результаты одного запроса? как вы получаете разные результаты для '@ sd, @ ed' в первых двух столбцах? – Kaf