Точный контроль порядка сортировки SQL - PullRequest
0 голосов
/ 18 декабря 2009

У меня есть отчет SQL, управляемый запросом, который сортирует его в порядке возрастания некоторого числового значения. Но пользователь хочет сопоставить две конкретные строки данных, которые появляются в разных порядковых позициях в результатах запроса. Есть ли способ сделать это с помощью SQL-файла отчета или самого файла .rdl?

Ответы [ 3 ]

3 голосов
/ 18 декабря 2009

Просто добавьте другое вычисленное выражение в качестве первого порядка по выражению, которое ставит эти два значения впереди всех остальных ...

Select [Other stuff]
From Table
Order By Case colName 
          When first_val then 0
          When second_val then 0
          else 1 End,
      colName 

или, РЕДАКТИРОВАТЬ (чтобы включить предложение @ 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 
0 голосов
/ 18 декабря 2009

Кроме того, CURSOR являются хорошим инструментом для мелкозернистого контроля. Я использую это, но я посмотрю, можно ли его удалить из итеративного кода, используя предложение ORDER BY CASE.

0 голосов
/ 18 декабря 2009

Похоже, вы просите об этом:

select * from table where col1 = first_val or col1 = second_val;

где first_val и second_val - значения для строк, которые пользователь хочет вернуть.

Если это не то, что вы ищете, уточните свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...