急求一个SQL语句,

aspnet_2012 2012-11-12 11:46:01



A表:
PNO,UP,UP1,UP2,UP3,UP4,UP5,FLAG
p1 1,2,3,4,5,0
p2 2,3,4,2,3,1
p3 5,2,3,2,1,0

B表:
SITE,PNO,CST
s1 p1,8
s2 p1,6

现在要得到一个结果集:当A表的FLAG为0的时候判断B表 是否有 PNO相同的记录,并且SITE为s1。
有就更新UP,UP1,UP2,UP3,UP4,UP5 的值为 B表的CST的值。

最终结果如下:

C表:
PNO,UP,UP1,UP2,UP3,UP4,UP5
p1 8, 8, 8, 8, 8
p2 2,3,4,2,3
p3 5,2,3,2,1



...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2012-11-12
  • 打赏
  • 举报
回复
UPDATE A1 SET UP=CST,UP1=CST,UP2=CST,UP3=CST,UP4=CST,UP5=CST
FROM A A1 INNOR JOIN B ON A1.PNO=B.PNO WHERE FLAG=0 AND SITE='s1'
快溜 2012-11-12
  • 打赏
  • 举报
回复
update A set UP=B.CST,UP1=B.CST,UP2=B.CST,UP3=B.CST,UP4=B.CST,UP5=B.CST from A,B where A.PNO=B.PNO and A.FLAG=0
Oraclers 2012-11-12
  • 打赏
  • 举报
回复
select ,A.PNO ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP END as UP ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP1 END as UP1 ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP2 END as UP2 ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP3 END as UP3 ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP4 END as UP4 ,CASE WHEN A.FLAG=0 and Q.SITE='S1' THEN B.CST ELSE A.UP5 END as UP5 INTO C from A left join (SELECT * FROM B WHERE [SITE]='S1') Q on A.PNO=Q.PNO
aspnet_2012 2012-11-12
  • 打赏
  • 举报
回复
错了,不是要更新A表,是要产生一个新的结果集。表C

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧