现在有个表T_Result(ProductName varchar(50),H0 decimal(18,2),T0 date,H1 decimal(18,2),T1 date)另外有一张表T_DATA(ProductName varchar(50),DataTime date,Price decimal(18,2))
提取每个产品最近时间前两条记录更新到上面的T_Result表下面的表我用如下SQL提取出数据:
select * from
(select Row_Number() over(partition by ProductName order by DataTime desc) as RowNumber,* from T_DATA) a
Where RowNumber<=2但是我需要将RowNumber=1的数据更新到HO,TO字段,RowNumber=2的数据更新到H1,T1字段我下面的写法会报错,无法识别b:
update a
set a.T0=(select DataTime from b where RowNumber=1)
,a.H0=(select Price from b where RowNumber=1)
,a.T1=(select DataTime from b where RowNumber=2)
,a.H1=(select Price from b where RowNumber=2)
from T_Result a,
(select * from
(select Row_Number() over(partition by ProductName order by DataTime desc) as RowNumber,* from T_DATA) a
Where RowNumber<=2) b
where a.ProductName=b.ProductName想问有没有比较好的SQL一次完成更新呢
提取每个产品最近时间前两条记录更新到上面的T_Result表下面的表我用如下SQL提取出数据:
select * from
(select Row_Number() over(partition by ProductName order by DataTime desc) as RowNumber,* from T_DATA) a
Where RowNumber<=2但是我需要将RowNumber=1的数据更新到HO,TO字段,RowNumber=2的数据更新到H1,T1字段我下面的写法会报错,无法识别b:
update a
set a.T0=(select DataTime from b where RowNumber=1)
,a.H0=(select Price from b where RowNumber=1)
,a.T1=(select DataTime from b where RowNumber=2)
,a.H1=(select Price from b where RowNumber=2)
from T_Result a,
(select * from
(select Row_Number() over(partition by ProductName order by DataTime desc) as RowNumber,* from T_DATA) a
Where RowNumber<=2) b
where a.ProductName=b.ProductName想问有没有比较好的SQL一次完成更新呢
解决方案 »
- 查询 SQL SERVER 2008 数据库的问题。
- 哪个版本的sql server 2000 能装在windows2003 X64 sp2上?
- 求一sql
- sqlserver数据表导入到VF的DBF中报错?
- 424891行表A 内联 131331行表B,怎么优化,提高查询效率?
- 我想查询人员2004年6月份在职人员总数如何得之?
- +++++++++又一个分组问题+++++++++++
- 这样的情况SQL怎么优化(欢迎高手金,分不够可以再加)
- 请教各位关于触发器方面的问题
- 请教大哥们一个简单问题,怎么能复制一个表,完全一样的表,有没想copy等类似的命令?
- varchar 和 nvarchar的选择?
- 用inner join与用in, 哪一种效率更高?
;with cte as(
select * from
(select Row_Number() over(partition by ProductName order by DataTime desc) as RowNumber,* from T_DATA) a
Where RowNumber<=2
)
update T_Result set T0=b.DataTime, H0=b.Price,T1=c.DataTime,H1=c.Price
from T_Result a inner join cte b on a.ProductName=b.ProductName inner join cte c on a.ProductName=c.ProductName
where b.RowNumber=1 and c.RowNumber=2