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

来源:互联网 发布:java 黑板模式 编辑:程序博客网 时间:2024/05/24 06:55

表的结构为:

产品名称 销售日期 数量
产品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 行)