TABLEA:Выберите N количество строк и UNION результаты
ConditionId ContentId
10004 101
10004 102
10001 104
10001 103
10001 115
Из приведенных выше данных нужно выбрать TOP N записей для particalar ConditionID и объединить его с другим набором лучших результатов N образуют различные условия Я бы.
Например: Для Состояние ID 10001 Выдают 2 Результаты и условия ID 10004 дают лучшие 3 результаты (оба этих результатов должны быть уникальными и не перекрывают друг друга):
Я мог бы сделать:
SELECT top(2) * FROM TABLEA
WHERE Conditionid = 10001
UNION
SELECT top(3) * FROM TABLEA
WHERE Conditionid = 10004
Но это всего лишь ограниченный сценарий, и запрошенные идентификаторы условия могут быть несколько, а не только 2 в приведенном выше сценарии.
Я не хочу, чтобы написать динамический SQL для повышения производительности, есть способ, которым я мог бы сделать нечто подобное с помощью ConditionId IN()
EDIT:
Результаты верхней 2 и top 3 не должен перекрывать содержимое, поэтому, если конкретный contentid уже был частью Query 1, он не должен быть частью следующего верхнего N и так далее.
Что такое версию двигателя, которую вы используете? Sql Server 2000, 2005,? – saamorim
Microsoft SQL Server 2008 –
My Edit говорит «ContentIds» no ConditionIds –