Я использую SQL Server 2008, и мне интересно, могу ли я выполнить свой запрос в одном операторе select и без подзапроса.SQL Select with Group By and Order By Date
Я хочу установить переменную в true, если поле в записи истинно в последних 10 созданных записях, где, если поле имеет значение true в последних 10 записях, переменная будет истинна, а если она ложна, переменная будет false, также если общее количество записей меньше 10, тогда переменная также будет ложной.
Моя проблема в том, чтобы получить последние 10 созданных записей, то мне нужно для того пользователя, спускаясь и сделать фильтр на топ-10, так что мой запрос должен выглядеть следующим образом, где он не является допустимым запрос:
declare @MyVar bit
set @MyVar = 0
select top(10) @MyVar = 1 from MyTable
where SomeId = 1000 and SomeFlag = 1
group by SomeId
having count(SomeId) >= 10
order by CreatedDate
Просьба предоставить мне ваши предложения.
Вот пример, скажем, мы имеем следующую таблицу, и сказать, что я хочу, чтобы проверить последние 3 записи для каждого ID:
ID Joined CreatedDate
1 true 03/27/2013
1 false 03/26/2013
1 false 03/25/2013
1 true 03/24/2013
1 true 03/23/2013
2 true 03/22/2013
2 true 03/21/2013
2 true 03/20/2013
2 false 03/19/2013
3 true 03/18/2013
3 true 03/17/2013
Для ид = «1», то результат будет FALSE поскольку последние 3 созданные записи не имеют значения true для поля JOINED в этих трех записях.
Для id = "2" результат будет TRUE, поскольку последние 3 созданные записи имеют истинное поле JOINED в этих трех записях.
Для id = "3" результат будет FALSE, поскольку последние созданные записи должны быть не менее 3 записей.
вы можете использовать 'IF EXIST' и поместить все ваши условия 'where' – Sachin
Пожалуйста, перечитайте это предложение, я не могу понять: _« где, если поле истинно в последних 10 записях, переменная будет истинна, а если она ложна, переменная будет ложной ».Это поможет, если вы покажете нам образцы данных и желаемый результат. –
Какая версия SQL Server? –