作为从Ebay加载订单的过程的一部分,我们将导出的文件转储到表中,然后使用存储过程处理该表。这适用于单个商品订单(即使是大量的一个商品),但它会在多个商品订单上出现不正确的小计。原因是因为查询,但我一直试图找到一种方法来获取正确的数据而不排除任何东西。
以下是单个订单项订单的示例(表格缩短以显示该点):
Quantity | Sale Price | Shipping and Handling | Total
2 $10 $4.95 $24.95
这是一个多行的
Quantity | Sale Price | Shipping and Handling | Total
5 $60 $14.95 $74.95
2 $10
2 $15
1 $10
以下是现有查询:
SELECT @RecentUID, @MaxOrderNum,
CAST(REPLACE(`Sale Price`, '$', '') AS DECIMAL(20,5))* e.Quantity,
CAST(REPLACE(`Shipping and Handling`, '$', '') AS DECIMAL(20,5)),
CAST(REPLACE(`Sales Tax`, '$', '') AS DECIMAL(20,5)),
CAST(REPLACE(`Total Price`, '$', '') AS DECIMAL(20,5)),
STR_TO_DATE(`Paid on Date`, '%b-%d-%y'), DATE_ADD(NOW(), INTERVAL 2 HOUR),
'Process', 44, 'eBay Via PayPal', `Buyer Fullname`, `Buyer Address 1`,
`Buyer Address 2`, `Buyer City`, `Buyer State`, `Buyer Zip`
FROM ebay_orders e
WHERE e.`Sales Record Number` = @eBayOrderNumber
AND e.`Paid on Date` <> ''
AND e.imported = 0;
对于单行项目会发生什么,它需要数量*销售价格才能获得小计值,这是正确的。但是,对于多行项目,它不需要数量乘以,因为销售价格已经是其他行的汇总。
我不知道该怎么做。这是一个非常复杂的查询,我无法理解我需要添加额外逻辑来捕获多行的情况。
答案 0 :(得分:0)
我选择做的是:
我设置了一个变量
Set @Count = Select Count(*) from ebay_orders where `Sales Record Number` = $eBayOrderNumber
这将告诉我它是单行顺序还是多行顺序。然后我只是在那里扔了一个if语句并重复删除了数量位的代码。不像我希望的那样优雅,但它有效。