我正在为一家经营店中店的朋友建立一个簿记申请表。基本上,每件产品都归卖家所有。
他们想要一个概述,他们可以看到交易中为他们的产品支付了多少钱的价值(由卖方1拥有)以及其他产品有多少钱(卖家!= 1)。
我尝试了以下查询:
SELECT transaction.id, SUM(orderline.count), SUM(orderline.price), SUM(o1.price), SUM(o2.price), transaction.date
FROM transaction
JOIN orderline
ON orderline.transaction_id = transaction.id
JOIN product
ON product.barcode = orderline.product_barcode
JOIN orderline o1
ON o1.transaction_id = transaction.id AND o1.product_barcode IN (SELECT barcode FROM product WHERE seller_id = 1)
JOIN orderline o2
ON o2.transaction_id = transaction.id AND o2.product_barcode IN (SELECT barcode FROM product WHERE seller_id != 1)
GROUP BY transaction.id
不幸的是,这只返回一个事务而不是全部,并且它也没有返回正确的价格总和:
在事务77中,SUM(o1.price)
的值应为4.5,而SUM(o2.price)
的值应为0.95。 SUM(orderline.price)
的值是正确的。
我希望获得所有交易,然后获得卖方1拥有的产品的总价值,价值和卖方拥有的产品价值!= 1(产品应该是交易的一部分,当然)。
答案 0 :(得分:1)
SELECT TRANSACTION.id,
Sum(orderline.count),
Sum(orderline.price),
Sum( case when product.seller_id = 1 then orderline.price else 0 end ),
Sum( case when product.seller_id <> 1 then orderline.price else 0 end),
TRANSACTION.date
FROM TRANSACTION 加入订单 ON orderline.transaction_id = TRANSACTION.id 加入产品 ON product.barcode = orderline.product_barcode GROUP BY TRANSACTION.id,TRANSACTION.date