当前位置: 代码迷 >> Sql Server >> 怎么插入临时表数据
  详细解决方案

怎么插入临时表数据

热度:61   发布时间:2016-04-25 01:20:48.0
如何插入临时表数据
我有个表
User(Id,year,month,name,sex)
  1,2001, 11,‘张三’,'男'
  2,2011, 01,‘张三’,'男'
  3,2011, 11,‘李四’,'男'
  4,2001, 06,‘李四’,'男'
  5,2011, 11,‘张三’,'男'
然后我要把这个表的数据插入临时表
这个临时表最后获取到的数据的id为2,3,5

条件是这样的,获取year和month最晚的数据,也就是时间最晚,
然后多个条件name like '%'+@name+'%' and sex like '%' +@sex+'%'
所以最后如果name是张三,sex是男的话,最后临时表的数据,就是user表里Id为2的数据了



------解决方案--------------------
SQL code
create table [User](Id int,[year] int,[month] int,name nvarchar(10),sex varchar(10))insert into [User] select 1,2001, 11,'张三','男'insert into [User] select 2,2011, 01,'张三','男'insert into [User] select 3,2011, 11,'李四','男'insert into [User] select 4,2001, 06,'李四','男'insert into [User] select 5,2011, 11,'张三','男'goselect * from [user] a where not exists(select 1 from [user] where [year]>a.[year] or [year]=a.[year] and [month]>a.[month])/*Id          year        month       name       sex----------- ----------- ----------- ---------- ----------3           2011        11          李四         男5           2011        11          张三         男(2 行受影响)*/godrop table [user]
------解决方案--------------------
SQL code
if object_id('[User]') is not null drop table [User]create table [User] (Id int,year int,month varchar(2),name varchar(4),sex varchar(2))insert into [User]select 1,2001,'11','张三','男' union allselect 2,2011,'01','张三','男' union allselect 3,2011,'11','李四','男' union allselect 4,2001,'06','李四','男' union allselect 5,2011,'11','王五','男'select * /* into #t */ from [User] awhere not exists(select 1 from [User] where name=a.name and sex=a.sex and ltrim(year)+ltrim(month)>ltrim(a.year)+ltrim(a.month))drop table [User]/*2    2011    01    张三    男3    2011    11    李四    男5    2011    11    王五    男
------解决方案--------------------
SQL code
select * from [user] a where not exists(select 1 from [user] where name=a.name and sex=a.sex  and [year]>a.[year] or (name=a.name and sex=a.sex and [year]=a.[year] and [month]>a.[month]))
  相关解决方案