首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求SQL 语句!怎样用group by实现第一列相同的名称只输出一次?在线等 [已结帖,结帖人:tian1982]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tian1982
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-18 18:08:04 楼主
    table中:
    school  class  course  name  grade
    a1      001    math    mary  30
    a1      001    chinese joel  67
    a1      003    math    than  78
    a1      004    ph      th    21
    b1      001    math    he    23
    b1      001    chinese you    78
    输出结果要求如下:
    school  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


    求SQL 语句,谢谢

    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangCK
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-11-18 18:13:071楼 得分:25
    SQL code
    --------------------------------- -- 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 行受影响) */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Haiwer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      5

    发表于:2008-11-18 18:17:002楼 得分:20
    SQL code
    select case when exists (select 1 from [table] where school=a.school and (class<a.class or class=a.class and course<a.course)) then '' else a.school end, case when exists (select 1 from [table] where school=a.school and class=a.class and course<a.course) then '' else a.class end, a.course, a.name, a.grade from [table] a order by a.school,a.class,a.course
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • josy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 18:31:393楼 得分:5
    学习,1楼的2000上貌似不能用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tian1982
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 19:25:174楼 得分:0
    thank you ,我先试试。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved