2009-12-18 2 views
0

SQL 보고서를 일부 숫자의 오름차순으로 정렬하는 쿼리로 구동했습니다. 그러나 사용자는 쿼리 결과의 다른 순서 위치에 나타나는 두 개의 특정 데이터 행이 병치되기를 원합니다. 보고서의 구동 SQL 또는 .rdl 파일 자체를 통해이 작업을 수행 할 수 있습니까? 이 요구하는 것처럼SQL 정렬 순서를 미세 조정

답변

3

그냥 ... 다른 모든 앞서 두 값을두고 표현하여 첫 번째 순서로

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 
을 다른 계산 식을 추가

다른 편집, first_Val 직후 second_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 
+2

당신은 ** CASE WHEN colName IN (first_val, second_val)을 사용하여 단축 할 수 있습니다. ** ** –

+0

ORDER BY 문맥에서 CASE를 사용할 수 있는지 몰랐습니다. – JonathanWolfson

+0

@Jonathan, 물론, 어디서나 케이스를 사용할 수 있습니다. @astander, good one .. 케이스에서 In (List) 구문을 사용할 수 있는지 확신 할 수 없었습니다 ... –

0

소리가 난다 :

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

first_val 및 second_val는 사용자가 돌려 원하는 행에 대한 값입니다.

이것이 원하는 것이 아니라면 질문을 명확히하십시오.

-1

CURSOR는 세밀한 제어를위한 좋은 도구입니다. 나는 이것을 사용하고 있지만 ORDER BY CASE 제안을 사용하여 반복 코드를 제거 할 수 있는지를 알 수 있습니다.

+1

"CURSOR"는 데이터베이스 개발자의 'Voldemort'입니다 .... –

관련 문제