1

最初は2つのクエリで作業していました。1つは生徒の点数を返し、もう1つは総計の点数を返していました。

ここで、これら2つのクエリを統合することにしましたが、Grand Total行が一番上に表示され、一番下に表示されます。2つの順序を変更してみましたが、結果に影響はありません。提案してください、私のクエリは次のとおりです。

SELECT AISECTRESULT_Schemes.SUBNO, 
        AISECTRESULT_Schemes.SUBJECT, 
        AISECTRESULT_Schemes.CE_TotalMarks, 
        AISECTRESULT_ExamMarksData.TotalMarksObt_C, 
        AISECTRESULT_Schemes.TE_TotalMarks, 
        AISECTRESULT_ExamMarksData.TotalMarksObt,
        MAXMARKS, 
        AISECTRESULT_ExamMarksData.OverAllMarks 
  FROM AISECTRESULT_Schemes 
 INNER JOIN AISECTRESULT_ExamMarksData 
    ON AISECTRESULT_Schemes.[EXAMSCHEME ID] = AISECTRESULT_ExamMarksData.EXAMSCHEMEID
 WHERE (AISECTRESULT_ExamMarksData.REGISTRATIONID = '201192145')

UNION

SELECT ''AS SUBNO,
       ''AS SUBJECT,
        SUM(AISECTRESULT_Schemes.CE_TotalMarks)CE_TotalMarks, 
        SUM(AISECTRESULT_ExamMarksData.TotalMarksObt_C)TotalMarksObt_C,
        SUM(AISECTRESULT_Schemes.TE_TotalMarks)TE_TotalMarks, 
        SUM(AISECTRESULT_ExamMarksData.TotalMarksObt)TotalMarksObt,
        SUM(AISECTRESULT_Schemes.MAXMARKS)MAXMARKS,
        SUM(AISECTRESULT_ExamMarksData.OverAllMarks)OverAllMarks
  FROM AISECTRESULT_Schemes
 INNER JOIN AISECTRESULT_ExamMarksData
    ON AISECTRESULT_Schemes.[EXAMSCHEME ID] = AISECTRESULT_ExamMarksData.EXAMSCHEMEID
 WHERE (AISECTRESULT_ExamMarksData.REGISTRATIONID = '201192145')

ここに画像の説明を入力してください

4

3 に答える 3

2

クエリの結果の順序は、明示的な 。がなくても任意ORDER BYです。

これで、順序は常に同じように見えますが、安心してください。データを追加したり、クラスター化インデックスを変更したりすると、当然の順序が無効になります。

通常、これは次の方法で解決します。

  • ソートするダミー列を追加する(選択する妥当な既存の列がない場合)
  • その列で明示的に並べ替える

SELECT 1 AS ToSortOn, ... FROM ...
UNION ALL SELECT 2 AS ToSortOn, ... FROM ...
ORDER BY ToSortOn
于 2012-07-31T14:08:15.823 に答える
1

最善の方法ではありませんが...

UNION ALL
于 2012-07-31T14:08:16.350 に答える
1

ORDER BYクエリにが必要です。これはそれを行う必要があります:

SELECT  SUBNO, 
        SUBJECT, 
        CE_TotalMarks, 
        TotalMarksObt_C, 
        TE_TotalMarks, 
        TotalMarksObt,
        MAXMARKS, 
        OverAllMark
FROM (  SELECT  AISECTRESULT_Schemes.SUBNO, 
                AISECTRESULT_Schemes.SUBJECT, 
                AISECTRESULT_Schemes.CE_TotalMarks, 
                AISECTRESULT_ExamMarksData.TotalMarksObt_C, 
                AISECTRESULT_Schemes.TE_TotalMarks, 
                AISECTRESULT_ExamMarksData.TotalMarksObt,
                MAXMARKS, 
                AISECTRESULT_ExamMarksData.OverAllMarks,
                1 ColOrder
        FROM AISECTRESULT_Schemes 
        INNER JOIN AISECTRESULT_ExamMarksData 
        ON AISECTRESULT_Schemes.[EXAMSCHEME ID] = AISECTRESULT_ExamMarksData.EXAMSCHEMEID
        WHERE AISECTRESULT_ExamMarksData.REGISTRATIONID = '201192145'

        UNION

        SELECT  ''AS SUBNO,''AS SUBJECT,
                SUM(AISECTRESULT_Schemes.CE_TotalMarks)CE_TotalMarks, 
                SUM(AISECTRESULT_ExamMarksData.TotalMarksObt_C)TotalMarksObt_C,
                SUM(AISECTRESULT_Schemes.TE_TotalMarks)TE_TotalMarks, 
                SUM(AISECTRESULT_ExamMarksData.TotalMarksObt)TotalMarksObt,
                SUM(AISECTRESULT_Schemes.MAXMARKS)MAXMARKS,
                SUM(AISECTRESULT_Exa![enter image description here][1]mMarksData.OverAllMarks)OverAllMarks,
                2
        FROM AISECTRESULT_Schemes 
        INNER JOIN AISECTRESULT_ExamMarksData 
        ON AISECTRESULT_Schemes.[EXAMSCHEME ID] = AISECTRESULT_ExamMarksData.EXAMSCHEMEID 
        WHERE AISECTRESULT_ExamMarksData.REGISTRATIONID = '201192145') AS Data
ORDER BY ColOrder
于 2012-07-31T14:08:54.890 に答える