update T_SthInStorage_Value
Set T_SthInStorage_Value.原料最新价格=T_Invoice.价格
from T_SthInStorage_Value, T_Invoice
where T_SthInStorage_Value.仓库储存物ID=T_Invoice.仓库储存物IDT_Invoice包含这些字段:仓库储存物ID,价格,开票年,开票月,开票日
T_SthInStorage_Value包含这些字段:仓库储存物ID,原料最新价格如何保证批量更新得到的是:最后一次的结算价格?用视图或者建临时表也行。现在好像也冇发现错,可是不保把啊,这只是因为一般来说时间近的输入晚,后更新。
可一个反例就...我曾想用Order By来保障最后更新时间最近的,update和建立视图都 不让我用Order By!
Order By T_Invoice.仓库储存物ID
,T_Invoice.开票年
,T_Invoice.开票月
,T_Invoice.开票日
在关键字 'Order' 附近有语法错误。批量更新得到的是 最后一次结算价格

解决方案 »

  1.   

    你的意思是更新T_SthInStorage_Value这个表的时间最近
    还是获取T_Invoice这个表时间最近
      

  2.   

    update T_SthInStorage_Value
    Set T_SthInStorage_Value.原料最新价格=T_Invoice.价格
    from T_SthInStorage_Value, (select * from T_Invoice Order By T_Invoice.仓库储存物ID
    ,T_Invoice.开票年
    ,T_Invoice.开票月
    ,T_Invoice.开票日) as T_Invoice
    where T_SthInStorage_Value.仓库储存物ID=T_Invoice.仓库储存物ID
    and 
      

  3.   

    你的意思是更新T_SthInStorage_Value这个表的时间最近
    还是获取T_Invoice这个表时间最近---我是想用T_Invoice这个表时间最近的《价格》字段值,去更新T_SthInStorage_Value里面的《原料最新价格》字段
      

  4.   

    用个临时表转换下select 仓库储存物ID,价格,时间 -- 这个时间,自己把你的开票年月日组合成这一个字段
    into #tmp
    from T_Invoice t 
    where not exists(select 1 from T_Invoice where 仓库储存物ID=t.仓库储存物ID and 时间>t.时间)update T_SthInStorage_Value
    Set T_SthInStorage_Value.原料最新价格=#tmp.价格
    from T_SthInStorage_Value, #tmp
    where T_SthInStorage_Value.仓库储存物ID=#tmp.仓库储存物ID
      

  5.   


    服务器: 消息 1033,级别 15,状态 1,行 5
    除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
    可怜我的T_Invoice是个派生表!
      

  6.   

    是不是能group By T_Invoice.仓库储存物ID,再加个top 1什么的,我先试试。大家有什么建议赶紧说啊
      

  7.   


    服务器: 消息 1033,级别 15,状态 1,行 5
    除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
    可怜我的T_Invoice是个派生表!
    update T_SthInStorage_Value
    Set T_SthInStorage_Value.原料最新价格=T_Invoice.价格
    from T_SthInStorage_Value, (select top 1 * from T_Invoice Order By T_Invoice.仓库储存物ID
    ,T_Invoice.开票年
    ,T_Invoice.开票月
    ,T_Invoice.开票日) as T_Invoice
    where T_SthInStorage_Value.仓库储存物ID=T_Invoice.仓库储存物ID
      

  8.   

    update T_SthInStorage_Value
    Set T_SthInStorage_Value.原料最新价格=T_Invoice.价格
    from T_SthInStorage_Value, (select top 1 * from T_Invoice Order By T_Invoice.仓库储存物ID
    ,T_Invoice.开票年
    ,T_Invoice.开票月
    ,T_Invoice.开票日) as T_Invoice
    where T_SthInStorage_Value.仓库储存物ID=T_Invoice.仓库储存物ID
    (所影响的行数为 1 行)-这个就更新了一个仓库储存物ID,-我要把 各个仓库储存物ID的价格都更新到最新!----这个可以:开票年*1000+开票月*100+开票日组合成时间