求出现部分字段重复的数据只显示一次
例如:
id name gender course score
A001 Jason 男 英语 90
A001 Jason 男 数学 80
B002 Angle 女 语文 95
B002 Angle 女 英文 100
C003 William 男 数学 95想得到显示的结果如下: id name gender course score
A001 Jason 男 英语 90
数学 80
B002 Angle 女 语文 95
英文 100
C003 William 男 数学 95

解决方案 »

  1.   

    这个不能用T-SQL语句能实现的,用其他程序实现这个吧,
      

  2.   

    ;WIT CTE AS
    (
    SELECT *,IID=ROW_NUMBER()(PARTITION BY id ORDER BY id ) FROM tb
    )SELECT id=CASE WHEN IDD=1 THEN id ELSE '' END,
           name=CASE WHEN IDD=1 THEN name ELSE '' END,
           gender=CASE WHEN IDD=1 THEN gender ELSE '' END,course,score
    FROM CTE
      

  3.   

    WIT CTE AS
    (
    SELECT *,IID=ROW_NUMBER()(PARTITION BY id ORDER BY id ) FROM tb
    )SELECT id=CASE WHEN IDD=1 THEN id ELSE '' END,
           name=CASE WHEN IDD=1 THEN name ELSE '' END,
           gender=CASE WHEN IDD=1 THEN gender ELSE '' END,
           course,
           score
    FROM CTE
      

  4.   

    declare @a table(id VARCHAR(20), NAME VARCHAR(20), gender VARCHAR(20),course VARCHAR(20), score INT)
    insert @a select 'A001' ,'Jason' ,'男' ,'英语', 90
    union all select 'A001' ,'Jason' ,'男' ,'数学', 80
    union all select 'B002' ,'Angle' ,'女' ,'语文', 95
    union all select 'B002' ,'Angle' ,'女' ,'英文', 100
    union all select 'C003' ,'William' ,'男' ,'数学', 95
    SELECT  CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id ) THEN id ELSE '' END id,
    CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id) THEN id ELSE '' END name,
    CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id) THEN id ELSE '' END gender,
    course,score
    FROM @a a --result
    /*id                   name                 gender               course               score       
    -------------------- -------------------- -------------------- -------------------- ----------- 
    A001                 A001                 A001                 英语                   90
                                                                   数学                   80
    B002                 B002                 B002                 语文                   95
                                                                   英文                   100
    C003                 C003                 C003                 数学                   95(所影响的行数为 5 行)
    */
      

  5.   

    declare @a table(id VARCHAR(20), NAME VARCHAR(20), gender VARCHAR(20),course VARCHAR(20), score INT)
    insert @a select 'A001' ,'Jason' ,'男' ,'英语', 90
    union all select 'A001' ,'Jason' ,'男' ,'数学', 80
    union all select 'B002' ,'Angle' ,'女' ,'语文', 95
    union all select 'B002' ,'Angle' ,'女' ,'英文', 100
    union all select 'C003' ,'William' ,'男' ,'数学', 95
    SELECT  CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id ) THEN id ELSE '' END id,
    CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id) THEN name ELSE '' END name,
    CASE WHEN course=(SELECT TOP 1 course FROM @a WHERE id=a.id) THEN gender ELSE '' END gender,
    course,score
    FROM @a a --result
    /*id                   name                 gender               course               score       
    -------------------- -------------------- -------------------- -------------------- ----------- 
    A001                 Jason                男                    英语                   90
                                                                   数学                   80
    B002                 Angle                女                    语文                   95
                                                                   英文                   100
    C003                 William              男                    数学                   95(所影响的行数为 5 行)*/