原贴: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 行)