日期:2014-05-17  浏览次数:20438 次

帮忙写个简单的sql 我有点懵了...
数据结构
股票代码 股票名称 是否持仓 操作时间
20300348 长亮科技 0 2012-09-05 09:51:55.290
20300328 宜安科技 1 2012-09-03 13:20:30.440
20300328 宜安科技 0 2012-08-31 10:41:54.910
20300348 长亮科技 1 2012-08-31 10:37:58.310
20300348 长亮科技 0 2012-08-28 09:55:14.793

 上面 是否持仓字段 0 代表还在持仓 1 清仓

 我想找到 所有持仓的股票的最新的一条交易时间,也就是说 是否持仓字段 全部是0的股票的最新交易时间

------解决方案--------------------
SQL code

declare @test table(股票代码 int, 股票名称 nvarchar(4),是否持仓 int, 操作时间 datetime)
insert into @test
select 20300348, N'长亮科技', 0, '2012-09-05 09:51:55.290' union all
select 20300328, N'宜安科技', 1, '2012-09-03 13:20:30.440' union all
select 20300328, N'宜安科技', 0, '2012-08-31 10:41:54.910' union all
select 20300348, N'长亮科技', 1, '2012-08-31 10:37:58.310' union all
select 20300348, N'长亮科技', 0, '2012-08-28 09:55:14.793'
;with cte as
(
    select row_number() over(partition by 股票代码 order by 操作时间 desc) rn,* from @test
)
select 股票代码, 股票名称,是否持仓, 操作时间 from cte where rn=1 and 是否持仓=0
/*
股票代码        股票名称 是否持仓        操作时间
----------- ---- ----------- -----------------------
20300348    长亮科技 0           2012-09-05 09:51:55.290

*/

------解决方案--------------------
我的回答也得不到你要结果?