这个逻辑怎么写

Dision LI 2010-10-18 08:47:03
这个逻辑怎么写
1.计款方式 <> '收费' --> 金额=0
2.计款方式 = '收费' --> 金额=公式A
2.1 进出性质.性质名称='样板(收费)A' --> 金额=公式B
2.2 进出性质.性质名称<>'样板(收费)A' -->2.3\2.4
2.3 dbo.客户.下订单 = '-1' --> 金额=公式C
2.4 正品 + 备品 > PO量 --> 金额=公式D


round(CAST(
(CASE WHEN 计款方式 = '收费' THEN
CASE WHEN dbo.客户.下订单 = '-1' THEN
CASE WHEN 正品 + 备品 > PO量 THEN
Case when 进出性质.性质名称='样板(收费)A' then
round(PO量 * CAST(COALESCE (round(dbo.送货单明细.单价,3),0) AS NUMERIC(10, 3)), 3)
ELSE
round((正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)), 3)
END ELSE
round((dbo.送货单明细.正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)),3)
End else
round(dbo.送货单明细.单价, 3)
END ELSE 0 END)
AS numeric(10, 3)),3) AS 应收金额


这个我写的好像不行
...全文
87 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQLCenter 2010-10-18
  • 打赏
  • 举报
回复
case when 计款方式 = '收费'
then case
when 进出性质.性质名称='样板(收费)A' --> 金额=公式B
when dbo.客户.下订单 = '-1' --> 金额=公式C
when 正品 + 备品 > PO量 --> 金额=公式D
end
else 0
end
SQLCenter 2010-10-18
  • 打赏
  • 举报
回复
不就这个逻辑吗

case when 计款方式 <> '收费' then 0 else
case
when 进出性质.性质名称='样板(收费)A' --> 金额=公式B
when dbo.客户.下订单 = '-1' --> 金额=公式C
when 正品 + 备品 > PO量 --> 金额=公式D
end
end
DEATH64 2010-10-18
  • 打赏
  • 举报
回复
没注意看,2楼写错了。建议写两个SQL语句UNION。
SQL77 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ameken 的回复:]
SQL code

round(CAST(
(case when 计款方式 = '收费' and 进出性质.性质名称='样板(收费)A' THEN
round(dbo.送货单明细.单价, 3)
WHEN (计款方式 = '收费') and (dbo.客户.下订单 = '-1') and ( 正品 + 备品 > PO量) and (进出……
[/Quote]
.....
dawugui 2010-10-18
  • 打赏
  • 举报
回复
就是个case when then end,至于怎么组合(具体的逻辑)得你才清楚了.
Dision LI 2010-10-18
  • 打赏
  • 举报
回复

round(CAST(
(case when 计款方式 = '收费' and 进出性质.性质名称='样板(收费)A' THEN
round(dbo.送货单明细.单价, 3)
WHEN (计款方式 = '收费') and (dbo.客户.下订单 = '-1') and ( 正品 + 备品 > PO量) and (进出性质.性质名称<>'样板(收费)A')THEN
round((正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)), 3)
WHEN 计款方式 = '收费' and (dbo.客户.下订单 <> '-1') and (进出性质.性质名称<>'样板(收费)A') THEN
round((dbo.送货单明细.正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)),3)
ELSE 0 END)
AS numeric(10, 3)),3) AS 应收金额


好像可以了
DEATH64 2010-10-18
  • 打赏
  • 举报
回复
CASE WHEN 计款方式 = '收费' THEN 0
WHEN 计款方式 = '收费' THEN 公式A
WHEN 进出性质.性质名称='样板(收费)A' THEN 公式B
WHEN 进出性质.性质名称<>'样板(收费)A'THEN 2.3\2.4
WHEN dbo.客户.下订单 = '-1'THEN 公式C
WHEN 正品 + 备品 > PO量 THEN 公式D
END 金额

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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