请大家帮忙分析一下,这样的效果怎么实现?
数据
终端名称 地址 兑换赠品 兑换数量 兑换单号 赠品名称 赠品数量 订单单号
顺源商贸 北京西路 螺丝 11 957188 铁钉 1 21-0169453
顺源商贸 北京西路 螺丝 11 957188 钳子 1 21-0169453
顺源商贸 北京西路 螺丝 11 957188 手电筒 1 21-0169453
顺源商贸 北京西路 螺丝 11 957188 锉刀 1 21-0169453
鑫光超市 南京西路 螺丝刀 10 957259 铁皮剪 1 21-0169406
鑫光超市 南京西路 螺丝刀 10 957259 手虎钳 2 21-0169406
阳光批发 邯郸路 电锯 3 957181 锯片 3 21-0169483
新城旧货 贵阳路 划规 10 957192 美工刀 2 21-0169484


效果1
终端名称 地址 兑换赠品 兑换数量 兑换单号 赠品名称 赠品数量 订单单号
顺源商贸 北京西路 螺丝 11 957188 铁钉 1 21-0169453
钳子 1 21-0169453
手电筒 1 21-0169453
锉刀 1 21-0169453
鑫光超市 南京西路 螺丝刀 10 957259 铁皮剪 1 21-0169406
手虎钳 2 21-0169406
阳光批发 邯郸路 电锯 3 957181 锯片 3 21-0169483
新城旧货 贵阳路 划规 10 957192 美工刀 2 21-0169484效果2
终端名称 地址 兑换赠品 兑换数量 兑换单号
顺源商贸 北京西路 螺丝 11 957188
顺源商贸 北京西路 赠品名称 赠品数量 订单单号
顺源商贸 北京西路 铁钉 1 21-0169453
顺源商贸 北京西路 钳子 1 21-0169453
顺源商贸 北京西路 手电筒 1 21-0169453
顺源商贸 北京西路 锉刀 1 21-0169453
鑫光超市 南京西路 兑换赠品 兑换数量
鑫光超市 南京西路 螺丝刀 10 957259
鑫光超市 南京西路 赠品名称 赠品数量 订单单号
鑫光超市 南京西路 铁皮剪 1 21-0169406
鑫光超市 南京西路 手虎钳 2 21-0169406
阳光批发 邯郸路 兑换赠品 兑换数量 兑换单号
阳光批发 邯郸路 电锯 3 957181
阳光批发 邯郸路 赠品名称 赠品数量 订单单号
阳光批发 邯郸路 锯片 3 21-0169483
新城旧货 贵阳路 兑换赠品 兑换数量 兑换单号
新城旧货 贵阳路 划规 10 957192
新城旧货 贵阳路 赠品名称 赠品数量 订单单号
新城旧货 贵阳路 美工刀 2 21-0169484

解决方案 »

  1.   

    with cte as (select *,row=row_number()over(partition by 终端名称 order by getdate()) from tb)select case when row=1 then 终端名称 else '' end,
           case when row=1 then 地址 else '' end,
           case when row=1 then 兑换赠品 else '' end,
           case when row=1 then 兑换数量 else '' end, 
           case when row=1 then 兑换单号 else '' end,
           赠品名称,赠品数量,订单单号
    from cte 
      

  2.   

    (无列名) (无列名) (无列名) (无列名) (无列名) 赠品名称 赠品数量 订单单号
    顺源商贸 螺丝 0 957188 铁钉 1 21-0169453
    11 0 钳子 1 21-0169453
    0 0 手电筒 1 21-0169453
    0 0 锉刀 1 21-0169453
    新城旧货 划规 0 957192 美工刀 2 21-0169484
    鑫光超市 螺丝刀 0 957259 铁皮剪 1 21-0169406
    10 0 手虎钳 2 21-0169406
    阳光批发 电锯 0 957181 锯片 3 21-0169483
    终端名称 兑换赠品 0 NULL 赠品名称 NULL 订单单号这条语句达不到理想效果,能否做出效果2?
      

  3.   

    你在什么地方用? 报表? 还是asp之类的?与其费劲的折腾SQL语句,还不如先把数据取出来,然后随你排列。
      

  4.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:数据
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'数据') 
    AND type in (N'U')) 
    DROP TABLE 数据
    GO---->建表
    create table 数据([终端名称] varchar(20),[地址] varchar(20),[兑换赠品] varchar(20),[兑换数量] varchar(20),[兑换单号] varchar(20),[赠品名称] varchar(20),[赠品数量] varchar(20),[订单单号] varchar(20))
    insert 数据
    select '顺源商贸','北京西路','螺丝',11,957188,'铁钉',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'钳子',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'手电筒',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'锉刀',1,'21-0169453' union all
    select '鑫光超市','南京西路','螺丝刀',10,957259,'铁皮剪',1,'21-0169406' union all
    select '鑫光超市','南京西路','螺丝刀',10,957259,'手虎钳',2,'21-0169406' union all
    select '阳光批发','邯郸路','电锯',3,957181,'锯片',3,'21-0169483' union all
    select '新城旧货','贵阳路','划规',10,957192,'美工刀',2,'21-0169484'
    GO--> 查询结果select * from (
    SELECT distinct [终端名称],[地址],[兑换赠品],[兑换数量],[兑换单号],'1'as dh,4 as dd FROM 数据
    union all
    SELECT distinct [终端名称],[地址],'[兑换赠品]','[兑换数量]','[兑换单号]',2,3 FROM 数据 
    union all
    SELECT  [终端名称],[地址],[赠品名称],[赠品数量],[订单单号],'3',2 FROM 数据
    union all
    SELECT distinct [终端名称],[地址],'[赠品名称]','[ 赠品数量]','[订单单号]',4,1 FROM 数据 
    )t order by [终端名称],[地址],dh desc,dd--> 删除表格
    --DROP TABLE 数据
      

  5.   

    /********终端名称 地址 兑换赠品 兑换数量 兑换单号 dh dd
    顺源商贸 北京西路 [赠品名称] [ 赠品数量] [订单单号] 4 1
    顺源商贸 北京西路 铁钉 1 21-0169453 3 2
    顺源商贸 北京西路 钳子 1 21-0169453 3 2
    顺源商贸 北京西路 手电筒 1 21-0169453 3 2
    顺源商贸 北京西路 锉刀 1 21-0169453 3 2
    顺源商贸 北京西路 [兑换赠品] [兑换数量] [兑换单号] 2 3
    顺源商贸 北京西路 螺丝 11 957188 1 4
    新城旧货 贵阳路 [赠品名称] [ 赠品数量] [订单单号] 4 1
    新城旧货 贵阳路 美工刀 2 21-0169484 3 2
    新城旧货 贵阳路 [兑换赠品] [兑换数量] [兑换单号] 2 3
    新城旧货 贵阳路 划规 10 957192 1 4
    鑫光超市 南京西路 [赠品名称] [ 赠品数量] [订单单号] 4 1
    鑫光超市 南京西路 铁皮剪 1 21-0169406 3 2
    鑫光超市 南京西路 手虎钳 2 21-0169406 3 2
    鑫光超市 南京西路 [兑换赠品] [兑换数量] [兑换单号] 2 3
    鑫光超市 南京西路 螺丝刀 10 957259 1 4
    阳光批发 邯郸路 [赠品名称] [ 赠品数量] [订单单号] 4 1
    阳光批发 邯郸路 锯片 3 21-0169483 3 2
    阳光批发 邯郸路 [兑换赠品] [兑换数量] [兑换单号] 2 3
    阳光批发 邯郸路 电锯 3 957181 1 4********/
      

  6.   

    修改一下--> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:数据
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'数据') 
    AND type in (N'U')) 
    DROP TABLE 数据
    GO---->建表
    create table 数据([终端名称] varchar(20),[地址] varchar(20),[兑换赠品] varchar(20),[兑换数量] varchar(20),[兑换单号] varchar(20),[赠品名称] varchar(20),[赠品数量] varchar(20),[订单单号] varchar(20))
    insert 数据
    select '顺源商贸','北京西路','螺丝',11,957188,'铁钉',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'钳子',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'手电筒',1,'21-0169453' union all
    select '顺源商贸','北京西路','螺丝',11,957188,'锉刀',1,'21-0169453' union all
    select '鑫光超市','南京西路','螺丝刀',10,957259,'铁皮剪',1,'21-0169406' union all
    select '鑫光超市','南京西路','螺丝刀',10,957259,'手虎钳',2,'21-0169406' union all
    select '阳光批发','邯郸路','电锯',3,957181,'锯片',3,'21-0169483' union all
    select '新城旧货','贵阳路','划规',10,957192,'美工刀',2,'21-0169484'
    GO--> 查询结果select [终端名称],[地址],[兑换赠品],[兑换数量],[兑换单号] from (
    SELECT distinct [终端名称],[地址],'兑换赠品' as 兑换赠品 ,'兑换数量' as 兑换数量,'兑换单号' as 兑换单号,1 as dh,4 as dd FROM 数据 
    union all
    SELECT distinct [终端名称],[地址],[兑换赠品],[兑换数量],[兑换单号],'2',3  FROM 数据
    union all
    SELECT distinct [终端名称],[地址],'赠品名称','赠品数量','订单单号',3,2 FROM 数据 
    union all
    SELECT  [终端名称],[地址],[赠品名称],[赠品数量],[订单单号],'4',1 FROM 数据
    ) t order by [终端名称],[地址],dh ,dd desc--> 删除表格/*
    终端名称 地址 兑换赠品 兑换数量 兑换单号
    顺源商贸 北京西路 兑换赠品 兑换数量 兑换单号
    顺源商贸 北京西路 螺丝 11 957188
    顺源商贸 北京西路 赠品名称 赠品数量 订单单号
    顺源商贸 北京西路 铁钉 1 21-0169453
    顺源商贸 北京西路 钳子 1 21-0169453
    顺源商贸 北京西路 手电筒 1 21-0169453
    顺源商贸 北京西路 锉刀 1 21-0169453
    新城旧货 贵阳路 兑换赠品 兑换数量 兑换单号
    新城旧货 贵阳路 划规 10 957192
    新城旧货 贵阳路 赠品名称 赠品数量 订单单号
    新城旧货 贵阳路 美工刀 2 21-0169484
    鑫光超市 南京西路 兑换赠品 兑换数量 兑换单号
    鑫光超市 南京西路 螺丝刀 10 957259
    鑫光超市 南京西路 赠品名称 赠品数量 订单单号
    鑫光超市 南京西路 铁皮剪 1 21-0169406
    鑫光超市 南京西路 手虎钳 2 21-0169406
    阳光批发 邯郸路 兑换赠品 兑换数量 兑换单号
    阳光批发 邯郸路 电锯 3 957181
    阳光批发 邯郸路 赠品名称 赠品数量 订单单号
    阳光批发 邯郸路 锯片 3 21-0169483
    */
      

  7.   

    答案很满意,效果很理想.
    但我的数据来自一长串的查询语句而来的,有好几个表连接而得到的.每条查询中的FROM 后都要跟上长串查询语句吗?
      

  8.   

    答案很满意,效果很理想.
    但我的数据来自一长串的查询语句而来的,有好几个表连接而得到的.每条查询中的FROM 后都要跟上长串查询语句吗?
      

  9.   

    答案很满意,效果很理想.
    但我的数据来自一长串的查询语句而来的,有好几个表连接而得到的.每条查询中的FROM 后都要跟上长串查询语句吗?