我有这些表:获得总价格和物品的数量与价格出售变化
- 项目(PK:ID |名称)
- priceChanges(PK:ID | FK:ITEM_ID |价格| FROM日期| TODATE)
- 请求(PK:ID | deliveryDate)
- requested_category(PK:ID | assigned_quantity | FK:ITEM_ID | FK:REQUEST_ID)
的PriceChanges表保持TR每个项目的价格变化的确认。
我想要将两个日期之间销售的物品与ech物品的总收入(价格*数量)进行比较,而数量是该期间以相同价格销售的物品的总计数(没有物品的价格变化) 。
这意味着,只要价格变化我得到一个新的行与新的价格出售的项目总数。
这里是期望输出的为例:
id Name sold price total ------ ------- ----- ------ ------ 8P01 51645A 3 1,20 3,60 8P01 51645A 1 2,82 2,82 8P01 51645A 5 2,50 12,50
我已经试过SQL命令,但我不能停止获取太多的重复列:
SELECT
i.id,
i.name,
sum(rc.assigned_quantity) AS assigned_quantity,
pc.price,
pc.price * sum(rc.assigned_quantity) as total
FROM requested_category rc
LEFT JOIN items i ON rc.item_id = i.id
LEFT JOIN request r ON rc.request_id = r.id
LEFT JOIN priceChanges pc ON pc.item_id = i.id
WHERE
r.delivery_date BETWEEN 'startDate' AND 'endDate'
GROUP BY i.id, i.name, pc.price
我得到的结果是:
id Name sold price total ------ ------- ----- ------ ------ 8P01 51645A 3 1,20 3,60 8P01 51645A 1 1,20 1,20 8P01 51645A 5 1,20 6,00 8P01 51645A 3 2,82 7,86 8P01 51645A 1 2,82 2,82 8P01 51645A 5 2,82 12,10 8P01 51645A 3 2,50 7,50 8P01 51645A 1 2,50 2,50 8P01 51645A 5 2,50 12,50
我试图在后续查询以下意见要求:
SELECT i.id, i.name, rc.assigned_quantity, pc.price
FROM requested_category rc
LEFT JOIN items i ON rc.item_id = i.id
LEFT JOIN request r ON rc.request_id = r.id
LEFT JOIN priceChanges pc ON pc.item_id = i.id
WHERE r.delivery_date BETWEEN 'startDate' AND 'endDate'
我得到这样的结果:
id name assigned_quantity price 8P01 51645A 1 1.20 8P01 51645A 1 2.82 8P01 51645A 1 2.50 8P01 51645A 3 1.20 8P01 51645A 3 2.82 8P01 51645A 3 2.50 8P01 51645A 5 1.20 8P01 51645A 5 2.82 8P01 51645A 5 2.50
谢谢
你可以发表你的查询返回pls的样本吗? – 2015-01-20 23:04:34
请指出(添加到您的文章)您的主键和外键。 – 2015-01-20 23:04:37
你有没有尝试删除左连接,只是做标准连接? – 2015-01-21 00:01:21