这个逻辑怎么写

AmeKen 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 应收金额


这个我写的好像不行
...全文
61 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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,至于怎么组合(具体的逻辑)得你才清楚了.
回复
AmeKen 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 金额
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-18 08:47
社区公告
暂无公告