2012-02-29 2 views
1

내 웹 페이지의 목록 컨트롤에 표시해야하는 특정 쿼리의 결과가 있습니다.적절하게 표시 할 sql 쿼리 결과 재정렬

조회 한 결과,
4 items in descending order
쿼리 2 결과 : 실제로
Top 1 result

난 다음 나머지를 제 쿼리로부터 제 질의 먼저 결과로부터 첫 번째 결과를 표시 할 세 번째는 첫 번째 쿼리 결과입니다.

처음에는 행을 다시 배열하려고했지만 개별 행을 변경할 수 없기 때문에 데이터 컨트롤의 ItemTemplate에서 가능하지 않습니다.

항목의 올바른 순서를 표시하는 순서대로 결과를주는 형식으로 쿼리를 작성해야합니까? 예를 들어 :
Take the first result from top 4 item +
Find the second result +
Three items (minus the top one already that has been already extracted)

어떤 제안이?

편집

1st class: (has 4 student) 

Tom (Has highest score) 
Rex (Hss second highest score) 
Rambo (HAs 3rd highest score) 
Betty (Has least score) 

2nd class: (has 1 student) 

Spooky (Has the highest score) 

Required result order in DataControl: 

Tom 
Spooky 
Rex 
Rambo 
Betty 
+0

Actally 샘플이 도움이 될 것 – om471987

+0

@Omkarpanhalkar : – Cipher

+0

는 결과 모두 열 수 있습니다 예를 들어이 같은 추가? – PraveenVenu

답변

1

먼저 선택에서 2 첫 번째 선택 및 두 번째에서 첫 번째와 다른 사람에서 첫 넣을 수 있습니다이 방법;

첫 번째 쿼리의 반환 :

public DataTable query1() 
{ 
       DataTable dt = new DataTable(); 

       #region YOUR SQL1 

       qs.Execute(); 
       dt = qs.Return; 

       return dt1; 
} 

public DataTable query2() 
{ 
       DataTable dt = new DataTable(); 

       #region YOUR SQL2 

       qs.Execute(); 
       dt = qs.Return; 

       return dt2; 
} 

당신은 정확히 Slect에서 DataTable을 반환처럼 뷰 상태 DataTable의 형식을 만들어야합니다. EXEXMPLE :

DataRow를 사용하여 데이터 결과를 제어 할 수 있어야합니다. EXEMPLE : 쿼리의

  DataTable dt1 = new DataTable(); 
     DataTable dt2 = new DataTable(); 

      dt1 = SelectQuery1(); 
      dt2 = SelectQuery2(); 


      //Create a new DataRow Like your ViewState 
      DataRow dr = _VS_RETURN_FORMAT; 


      //Adding to the fields the value that your need 

      dr["field1"] = dt1.Row[0][0]; 
      dr["field2"] = dt1.Row[0][1]; 


      _VS_RETURN_FORMAT.Rows.Add(dr); 

      dr["field1"] = dt2.Row[0][0]; 
      dr["field2"] = dt2.Row[0][1]; 

      _VS_RETURN_FORMAT.Rows.Add(dr); 

      dr["field1"] = dt1.Row[1][0]; 
      dr["field2"] = dt1.Row[1][1]; 

      _VS_RETURN_FORMAT.Rows.Add(dr); 

      dr["field1"] = dt1.Row[2][0]; 
      dr["field2"] = dt1.Row[2][1]; 

      _VS_RETURN_FORMAT.Rows.Add(dr); 
1
select top 1 Name ClassRank from Class1 order by Score desc 
union 
select top 1 Name ClassRank from Class2 order by Score desc 
union 
SELECT * FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY Score desc) AS rownumber  
    FROM Class1 
) AS foo 
WHERE rownumber >1 
+0

1 등석의 '첫 번째'는 항상 전체 목록의 최상단에 있어야하며 '두 번째'클래스의 첫 번째 항목은 항상 전체 목록의 2 위 자리에 있어야합니다. 그래서 전체적인 조합과 정렬은 나에게 좋지 않을 것입니다. 아니면 어떻게 상위 2 곳을 교환 할 수 있을까요? :/ – Cipher

+0

업데이트 대답 – PraveenVenu

+0

주문 및 조합은 첫 번째'선택'쿼리에 함께 올 수 없습니다 – Cipher