存在多行时设置列值

时间:2015-04-30 16:14:51

标签: sql ms-access

我有一个扁平数据集,其中包括订单#发货# ShippingCharges 。每个订单可以有多个货件,但是在订单级别收取运费。这是一个示例数据集:

1, 1, $5.00
2, 1, $6.00
2, 2, $6.00
3, 1, $10.00
3, 2, $10.00
3, 3, $10.00
4, 1, $4.00

如您所见,数据集中的每个货件都会重复订单 ShippingCharges 。我需要提出一个查询,当订单上有多个货件时,将 ShippingCharges 设置为0。生成的数据集如下所示:

1, 1, $5.00
2, 1, $6.00
2, 2, $0.00
3, 1, $10.00
3, 2, $0.00
3, 3, $0.00
4, 1, $4.00

请务必注意,货件编号数字并非全部重置为1。我在样本数据集中做了这个,以便更容易理解。 货件#实际上是一个连续的整数,每次创建货件时都会递增,因此简单的UPDATE dataset SET ShippingCharges=0 WHERE Shipment# > 1 答案。

如果订单的出货次数超过1次,我似乎需要执行UPDATE,但仅适用于出货数大于订单的最低出货量#的行。

任何想法可能是什么样的,特别是对于Microsoft Access?

2 个答案:

答案 0 :(得分:2)

  

UPDATE数据集SET ShippingCharges = 0 WHERE Shipment#> 1是   答案。

货件#订单号的最小货件#不匹配时,请将费用设置为零。

UPDATE dataset
SET ShippingCharges=0
WHERE [Shipment#] <> DMin("[Shipment#]", "dataset", "[Order#]=" & [Order#])

如果 Order#字段是文本数据类型,请在第三个DMin参数( Criteria )中添加引号:

DMin("[Shipment#]", "dataset", "[Order#]='" & [Order#] & "'")

答案 1 :(得分:0)

这是用Oracle编写的,所以不确定你是否可以在Access中做类似的事情。 子选择到表格查看它是否是最小装运然后您使用装运费用或0输出。

WEB-INF/lib
相关问题