---------------------------------
--  Author: liangCK 小梁
--  Date  : 2008-11-18 18:09:45
---------------------------------
 
--> 生成测试数据: @T
DECLARE @T TABLE (school VARCHAR(2),class VARCHAR(3),course VARCHAR(7),name VARCHAR(4),grade INT)
INSERT INTO @T
SELECT 'a1','001','math','mary',30 UNION ALL
SELECT 'a1','001','chinese','joel',67 UNION ALL
SELECT 'a1','003','math','than',78 UNION ALL
SELECT 'a1','004','ph','th',21 UNION ALL
SELECT 'b1','001','math','he',23 UNION ALL
SELECT 'b1','001','chinese','you',78--SQL查询如下:;WITH Liang
AS
(
    SELECT 
        *,
        RID1=ROW_NUMBER()
               OVER(PARTITION BY school 
                        ORDER BY GETDATE()),
        RID2=ROW_NUMBER() 
               OVER(PARTITION BY school,class
                        ORDER BY GETDATE())
    FROM @T
)
SELECT
   shcool=CASE WHEN RID1<>1 
                   THEN ''
                ELSE school
           END,
   class=CASE WHEN RID2<>1
                   THEN ''
                ELSE class
         END,
   course,
   name,
   grade
FROM Liang/*
shcool class course  name grade
------ ----- ------- ---- -----------
a1     001   math    mary 30
             chinese joel 67
       003   math    than 78
       004   ph      th   21
b1     001   math    he   23
             chinese you  78(6 行受影响)*/