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 语句应该怎么写呢?正确的结果如下图: 展开
 我来答
luoweilingqusi
2018-08-07 · TA获得超过107个赞
知道小有建树答主
回答量:262
采纳率:73%
帮助的人:63.6万
展开全部
大概看出你的意思应该是要把对应商品的最新单价更新到另一个表去。也就是不管前面那些字段是否有相同,都是取最新的那个。那么我们可以通过分组排序取第一条的思路去更新。分组条件就是你的对应条件,排序字段是分组字段加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
SDMG123
2018-08-07 · TA获得超过6178个赞
知道大有可为答主
回答量:6676
采纳率:80%
帮助的人:698万
展开全部
这个不难,先在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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学不安道
2018-08-07 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:209
采纳率:75%
帮助的人:38.8万
展开全部
sql语句中有if语法,你先写个简单的试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式