2011-06-23 69 views
0

選擇記錄在我的節目我都喜歡生成一個表:如何編寫SQL查詢,從該表

id Roll Subject  Marks LetterGrade GradePoint 

1 1 Physics  40 D   1 

2 1 Chemistry 50 C   2 

3 1 Mathematics 60 B   3 

4 2 Physics  40 D   1 

5 2 Chemistry 50 C   2 

6 2 Biology  59 C   2 

我使用VB6和MS Access數據庫。現在我想在Datagrid中顯示,如:

Roll Sub  Marks LetterG Gp Sub  Marks LetterG Gp Sub   Marks LetterG Gp GPA GPAExcl 

1 Physics 40 D  1 Chemistry 50 C  2 Mathematics 60 B  3 2.00 1.5 

2 Physics 40 D  1 Chemistry 50 C  2 Biology  59 C  2 1.5 1.5 

多行對越滾

與每卷最大的ID主題是另一個主題。如果其Gp爲大於2,則它加入與GPA更大,GPAExcl僅與第一兩個被攝體因此,對於輥1 GPA

(1+2+1)/2=2.00 (gp的數學是大於2和3-2=1

和GPAExcl是(1+2)/2=1.5

和防2都GPA和GPAExcl = 1.5

如何編寫SQL查詢,以便我能得到這樣的記錄,可以在數據網格顯示它

是否可以編寫這樣的查詢?

+0

如果有更多的科目...... – Binil

+0

當然有更多的科目,但我不能在這裏寫所有這些。但是如果我知道如何與這些工作,那麼我可以與更多的工作。 – Rasel

+0

你有答案嗎?如果是,那麼請標記它,這將有助於縮短未回答列表 – bjan

回答

0

在我看來,你需要使用DataList而不是DataGrid。 DataList允許您指定RepeatColumns和RepeatDirection。

在這種情況下,您似乎希望RepeatDirection是垂直的。然後你只需找出你想要的列數。

我不確定你需要的SQL有什麼不同。這似乎是一個格式問題 - 不是查詢問題。

好吧,我想我看着那個錯誤。對於那個很抱歉。我現在看到你想要左邊所有三個課程的角色,然後是右邊那個角色的所有課程。

可能有幾種方法可以解決這個問題。一種方法是使用兩個中繼器。這將創建表(您需要添加標題行)。如果每個角色沒有相同數量的課程,則必須通過列間隔來處理列。

<asp:Repeater ID="repRoles" runat="server"> 
    <HeaderTemplate> 
     <table>    
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td><%# Eval("Role") %></td> 
      <asp:Repeater id="repCourses" runat="server"> 
       <ItemTemplate> 
        <td> 
         <%# Eval("Subject") %> 
        </td> 
        <td> 
         <%# Eval("Marks") %> 
        </td> 
        <td> 
         <%# Eval("LetterGrade") %> 
        </td> 
       </ItemTemplate> 
      </asp:Repeater> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 

您可以在第一個中繼器上使用ItemDataBound事件,然後將適當的課程綁定到第二個中繼器。

+0

我沒有使用數據列表。正如你所說的關於重複列我還需要在重複列之後的最後另外兩列。 – Rasel