SQL语句update多列满足判断条件后才赋值到另一个表不会写,求助!
现在想做的是,把第一表temp表中的unitprice值赋值给第二个表gvcprice的列price条件是:wheregvcprice.goodsid=temp.good...
现在想做的是,把第一表temp表中的unitprice值赋值给第二个表gvcprice的列price条件是:where gvcprice.goodsid = temp.goodsid, gvcprice.flag = temp.clientkind, gvcprice.cvid = temp.clientid, gvcprice.unitid = temp.unitid如果上面条件满足那么就赋值temp.billdate日期值最大的如果temp.billdate不唯一,那么就赋值temp.invoiceid列值最大的如果temp.invoiceid列值不唯一,就赋值itemno列值最大的这个update 语句应该怎么写呢?正确的结果如下图:
展开
3个回答
展开全部
大概看出你的意思应该是要把对应商品的最新单价更新到另一个表去。也就是不管前面那些字段是否有相同,都是取最新的那个。那么我们可以通过分组排序取第一条的思路去更新。分组条件就是你的对应条件,排序字段是分组字段加billdate、invoiceid、itemno
代码如下: /×排好序产生一个临时表,之后我们只要分组取最大AID的单价去更新 ×/
Select identity(int,1,1)AID,goodsid,clientkind,clientid,unitid,billdate,invoiceid,itemno, unitprice into #TT From temp Order by goodsid,clientkind,clientid,unitid,billdate,invoiceid,itemno
delete #TT Where AID Not in(Select AID From (Select goodsid,clientkind,clientid,unitid,MAX(AID)AID From #TT Group by goodsid,clientkind,clientid,unitid)A)
/×剩下就是更新单价了,只是表temp变成用处理后的#TT×/
Update gvcprice Set gvcprice.price=#TT.unitprice From gvcprice,#TT where gvcprice.goodsid = #TT.goodsid, gvcprice.flag = #TT.clientkind, gvcprice.cvid = #TT.clientid, gvcprice.unitid = #TT.unitid
代码如下: /×排好序产生一个临时表,之后我们只要分组取最大AID的单价去更新 ×/
Select identity(int,1,1)AID,goodsid,clientkind,clientid,unitid,billdate,invoiceid,itemno, unitprice into #TT From temp Order by goodsid,clientkind,clientid,unitid,billdate,invoiceid,itemno
delete #TT Where AID Not in(Select AID From (Select goodsid,clientkind,clientid,unitid,MAX(AID)AID From #TT Group by goodsid,clientkind,clientid,unitid)A)
/×剩下就是更新单价了,只是表temp变成用处理后的#TT×/
Update gvcprice Set gvcprice.price=#TT.unitprice From gvcprice,#TT where gvcprice.goodsid = #TT.goodsid, gvcprice.flag = #TT.clientkind, gvcprice.cvid = #TT.clientid, gvcprice.unitid = #TT.unitid
展开全部
这个不难,先在temp 表根据顺序排序,取Top 1,再通过子查询赋值即可
update gvcprice set price =(select top 1 unitprice from temp where gvcprice.goodsid = temp.goodsid, gvcprice.flag = temp.clientkind, gvcprice.cvid = temp.clientid, gvcprice.unitid = temp.unitid order by invoiceid case , itemno case)
update gvcprice set price =(select top 1 unitprice from temp where gvcprice.goodsid = temp.goodsid, gvcprice.flag = temp.clientkind, gvcprice.cvid = temp.clientid, gvcprice.unitid = temp.unitid order by invoiceid case , itemno case)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql语句中有if语法,你先写个简单的试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |