SQL关于多条件查询的问题

pop_kiner 2009-05-31 05:04:33
现在需要在SQL中对付款类型进行判断,比如付款类型为'款到发货、预付金额、提付金额' 则将日期更新为当前时间
'货到付款、到付金额'在满足物料全部到货切质检通过,将日期更新为当前日期
'质保金' 无问题 时间更新为1年后的当前时间
'其它' 则不做处理
现在这个多条件用什么方法写比较好?
用过用IF
IF(SELECT * FROM RPOPayTenor WHERE Soft ='款到发货' OR Soft='预付金额' OR Soft='提付金额')
BEGIN
UPDATE RpoCourse SET AutoDT=(SELECT CONVERT(VARCHAR(10),GETDATE(),120)) WHERE OS_NO=@OS_NO

IF(SELECT * FROM RPOPayTenor WHERE Soft='货到付款' OR Soft='到货金额') --货到,到货方式
BEGIN
UPDATE RpoCourse SET AutoDT=(SELECT CONVERT(VARCHAR(10),GETDATE(),120))
WHERE OS_NO=@OS_NO AND OS_NO NOT IN(SELECT TF_POS.OS_NO FROM TF_POS INNER JOIN TF_PSS ON TF_POS.QTY <> TF_PSS.QTY
AND TF_POS.PRD_NO=TF_PSS.PRD_NO INNER JOIN TF_TY ON TF_POS.QTY <> TF_TY.QTY_OK
AND TF_POS.PRD_NO=TF_TY.PRD_NO)
END

IF(SELECT * FROM RpoPayTenor WHERE Soft='质保金')
BEGIN
UPDATE RpoCourse SET AutoDT=(SELECT DATEADD(YEAR,1,CONVERT(VARCHAR(10),GETDATE(),120)))
WHERE OS_NO=@OS_NO AND OS_NO NOT IN(SELECT TF_POS.OS_NO FROM TF_POS INNER JOIN TF_TY ON
TF_POS.OS_NO=TF_TY.BIL_NO AND TF_QTY.LOST IS NULL)
END
下面这些代码哪里出问题了 请大虾们指教下
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pop_kiner 2009-06-03
  • 打赏
  • 举报
回复
谢谢~
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]
IF-->IF exists
[/Quote]
眼睛好亮啊
ch315537 2009-06-01
  • 打赏
  • 举报
回复
大牛们好眼力啊,佩服
sdhdy 2009-05-31
  • 打赏
  • 举报
回复
IF exists(SELECT 1 FROM RPOPayTenor WHERE Soft ='款到发货' OR Soft='预付金额' OR Soft='提付金额') 
BEGIN
UPDATE RpoCourse SET AutoDT=CONVERT(VARCHAR(10),GETDATE(),120) WHERE OS_NO=@OS_NO
end
IF exists(SELECT 1 FROM RPOPayTenor WHERE Soft='货到付款' OR Soft='到货金额') --货到,到货方式
BEGIN
UPDATE RpoCourse SET AutoDT=CONVERT(VARCHAR(10),GETDATE(),120)
WHERE OS_NO=@OS_NO AND OS_NO NOT IN(SELECT TF_POS.OS_NO FROM TF_POS INNER JOIN TF_PSS ON TF_POS.QTY <> TF_PSS.QTY
AND TF_POS.PRD_NO=TF_PSS.PRD_NO INNER JOIN TF_TY ON TF_POS.QTY <> TF_TY.QTY_OK
AND TF_POS.PRD_NO=TF_TY.PRD_NO)
END

IF exists(SELECT * FROM RpoPayTenor WHERE Soft='质保金')
BEGIN
UPDATE RpoCourse SET AutoDT=DATEADD(YEAR,1,CONVERT(VARCHAR(10),GETDATE(),120))
WHERE OS_NO=@OS_NO AND OS_NO NOT IN(SELECT TF_POS.OS_NO FROM TF_POS INNER JOIN TF_TY ON
TF_POS.OS_NO=TF_TY.BIL_NO where TF_QTY.LOST IS NULL)
END
SQL77 2009-05-31
  • 打赏
  • 举报
回复
IF-->IF exists
IF里面要么是表达示,如果只是查询,得换在BOOL值的IF EXISTS
寻找Python之禅 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]
IF-->IF exists
[/Quote]

同意
百年树人 2009-05-31
  • 打赏
  • 举报
回复
IF-->IF exists

34,589

社区成员

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

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