表结构
CREATE TABLE tb(
[公司] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[产品] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] [datetime] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
原数据
公司 产品 更新时间
a司 苹果 2013-1-12
a司 香蕉 2013-1-12
a司 苹果 2013-1-10
a司 香蕉 2013-1-10
b司 苹果 2013-1-10
b司 香蕉 2013-1-10
b司 最后一次是10号更新的,所以保留
只保留最后一次添加时间 的记录,如何操作
1删除后表内数据:
a司 苹果 2013-1-12
a司 香蕉 2013-1-12
b司 苹果 2013-1-10
b司 香蕉 2013-1-10
2不删除只查询的结果:
a司 苹果 2013-1-12
a司 香蕉 2013-1-12
b司 苹果 2013-1-10
b司 香蕉 2013-1-10
这两条语句 该怎么写
------解决方案--------------------
CREATE TABLE tb3(
[公司] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[产品] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] [datetime] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
insert into tb3
select 'a司', '苹果', '2013-1-12'
union all
select 'a司' , '香蕉', '2013-1-12'
union all
select 'a司' , '苹果', '2013-1-10'
union all
select 'a司' , '香蕉', '2013-1-10'
union all
select 'b司' , '苹果', '2013-1-10'
union all
select 'b司' , '香蕉', '2013-1-10'
----删除后
delete from tb3
where id not in
(
select id from
(
select 公司,产品,MAX(CreateTime)time from tb3
group by 公司,产品
)a
left join
(
select * from tb3
)b
on a.公司=b.公司
and a.产品=b.产品
and a.time=b.CreateTime
)
----查询
select 公司,产品,MAX(CreateTime)
from tb3
group by 公司,产品
order by 公司
------解决方案--------------------
CREATE TABLE tb
([公司] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[产品] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] [date] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
insert into tb
select 'a司', '苹果', '2013-1-12' union all