У меня есть SQL-отчет, управляемый запросом, который сортирует его в порядке возрастания некоторого числового значения. Но пользователь хочет, чтобы две конкретные строки данных, которые появляются в разных порядковых позициях в результатах запроса, были сопоставлены. Есть ли способ сделать это, будь то во время запуска SQL или самого файла .rdl?Точный контроль над SQL Сортировка
ответ
Просто добавьте еще вычисленного выражения в качестве первого порядка по экспрессии, что ставит эти два значения впереди всех ...
Select [Other stuff]
From Table
Order By Case colName
When first_val then 0
When second_val then 0
else 1 End,
colName
или EDIT (чтобы включить @ предложение astander в)
Select [Other stuff]
From Table
Order By Case
When colName In (first_Val, second_Val)
Then 0 else 1 End,
colName
и другой Edit, немедленно положить second_val после first_Val ...
Select [Other stuff]
From Table
Order By Case
When colName < first_Val And colName <> secondVal Then 0
When colName = first_Val Then 1
When colName = secondVal Then 2
Else 3 End,
colName
Похоже, что вы просите за это:
select * from table where col1 = first_val or col1 = second_val;
где first_val и second_val являются значения для строк, которые пользователь хочет вернувшихся.
Если это не то, что вы ищете, уточните ваш вопрос.
Также , КУРСОР - хороший инструмент для мелкозернистого контроля. Я использую это, но я увижу, можно ли его удалить из итеративного кода, используя предложение ORDER BY CASE.
«CURSOR» - это «Волдеморт» разработчиков баз данных .... –
- 1. Точный контроль над перестановками GWT через * .gwt.xml
- 2. Точный контроль над битами текстур в GLSL
- 3. Точный контроль над андроидами VectorDrawable анимации
- 4. SQL - сортировка в оговорке НАД
- 5. Получить контроль над мышью над
- 6. Контроль над версией Crontab?
- 7. Программный контроль над Firefox
- 8. Получить контроль над javascript
- 9. Обратный контроль над апплетом
- 10. программный контроль над PDFCreator
- 11. Контроль над абзацами?
- 12. Скрыть контроль над LostFocus
- 13. Потерял контроль над WinForm
- 14. Точный контроль макета памяти в ржавчине?
- 15. Точный контроль ширины штанги в штриховом шкафу
- 16. Контроль над версией MySQL - Subversion
- 17. Расширить контроль над пользователями sharepoint
- 18. Как получить контроль над детьми?
- 19. Справочник: полный контроль над C#
- 20. Контроль над детьми в Asp.net
- 21. Явный контроль над JavaScript JIT?
- 22. Получить контроль над кнопкой радио
- 23. Найти определенный контроль над окном
- 24. Перетащите контроль над флеш-фильмом?
- 25. Связанный контроль над рабочими событиями
- 26. прозрачный контроль над формой Drew
- 27. Поп-контроль над проблемой iPad!
- 28. Контроль над сторонними подключаемыми компонентами
- 29. контроль над процессом в PHP
- 30. Как добавить контроль над GraphicsPath
Вы можете сократить это с помощью ** CASE WHEN colName IN (first_val, second_val), затем 0 ** –
Я не знал, что вы можете использовать CASE в контексте ORDER BY. – JonathanWolfson
@ Джонатан, конечно, вы можете использовать Кейс где угодно. @astander, хороший. Я не был уверен, что вы можете использовать синтаксис In (List) внутри футляра ... –