数据库中实现,字段合并显示

原贴:http://community.csdn.net/Expert/topic/4432/4432281.xml?temp=.4668543

表的结构为:

产品名称 销售日期 数量
产品A 2004-10-10 10
产品A 2004-10-9           5
产品B 2005-10-10 4
产品B 2005-9-3          12


我现在查询想得到的效果是:
产品名称 销售日期 数量
产品A 2004-10-10 10
 2004-10-9           5
产品B 2005-10-10 4
 2005-9-3        12
已按第一列排序,我想让第一列相同的数据只在最开始的一行显示。该如果做,考虑很久都没有结果,请大家帮忙。

一般这中情况,在前台处理效率非常高,前台还可以居中显示,数据库处理起来效率要低一些,下面我简单写一个数据库中处理的方式.

--测试环境
Create Table #(产品名称 varchar(10),销售日期 varchar(10),数量 int)
insert into # select '产品A','2004-10-10',10
union all select '产品A','2004-10-9',5
union all select '产品B','2005-10-10',4
union all select '产品B','2005-9-3',12

--查询
select
    产品名称=(case
              when 销售日期 = (select top 1 销售日期 from # where 产品名称=a.产品名称)
                  then a.产品名称
              else
                  ''
          end),
    销售日期,
    数量
from # a
--结果
产品名称       销售日期       数量         
---------- ---------- -----------
产品A          2004-10-10    10
                     2004-10-9      5
产品B           2005-10-10   4
                      2005-9-3       12

(所影响的行数为 4 行)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值