SQL (Oracle) 按项目查询销售额
SQL (Oracle) query for sales by item
我需要帮助来构建一个 ORACLE SQL 查询,该查询可以按项目名称提供每个月的销售额。
以下是查询中需要的列 - 日期(月份)、商品名称、销售数量、平均单价、净销售额、信用单位
已售出数量
of an Item 是当月特定商品扣除积分后的净售出数量;那是
=SUM(发票项目。售出数量)– SUM(信用票据项目。信用数量)
净销售额
特定月份的项目 = SUM(发票 Items.Total 金额)- SUM(信用票据项目。信用金额)
学分单位
: 指当月已入账的物品总数(credit Quantity)
下面是tables:
发票项目(发票日期、发票编号、产品编号、项目名称、销售数量、总金额)
库存调整(日期、实体、EntityID、ItemID、项目名称、数量、单价、库存量、净额)
此 table 在为该项目生成发票或贷方通知单时保存该项目的单价和数量。实体可以是 'Invoice' 或 'CreditNote'。 EntityID 是发票 ID 或 CreditNotes ID
信用票据(信用票据日期、信用票据 ID、客户 ID)
信用票据项目(CreditNotes ID、项目 ID、项目名称、信用数量、信用金额)
注意:这是信用票据 table 的行项目 table。 CreditNote Date 在 master table
中可用
到目前为止,我有这个查询,但我无法确定下一步是加入贷方通知单和贷方通知单项目并获取净销售额和已售数量。
SELECT
inv_items."Invoice Date" inv_date,
inv_items."Product ID" inv_items_Prod_ID,
inv_items.Item Name,
AVG(IDR."Unit Price"),
SUM(inv_items."Quantity sold") total_Qty_Sold,
SUM(inv_items."Total Amount") inv_ItemsSale
FROM "Invoice Items" inv_items
JOIN "Inventory Adjustment" IDR ON IDR."EntityID" = inv_items."Invoice ID"
AND IDR."ItemID" = inv_items."Product ID"
AND IDR."Date" = inv_items."Invoice Date"
GROUP BY 1,
2,
3
非常感谢任何帮助。
从您的查询和描述看来,invoice_id、product_id 和日期 - 对于发票项目而言是唯一的。
所以你需要对信用票据做同样的事情 – (select cni.*, cn.CreditNote Date from Credit Notes cn, Credit Note Items cni where cni.CreditNotes ID = cn.CreditNotes ID)子
然后通过相同的 3 列将此子查询连接到 idr。
另外,你最好按 IDR.itemname、IDR.itemid 和 IDR.date
分组
我根据你的问题要求编写了脚本,但是由于你的问题中的信息较少,比如列的数据类型和它们的结构,我不确定,你可以试试让我知道代码是否可以:
SELECT
to_char (inv_items."Invoice Date", 'MONTH') inv_month,
inv_items."Product ID" inv_items_Prod_ID,
inv_items."Item Name" inv_items_name,
AVG(IDR."Unit Price") avg_unit_price,
SUM(inv_items."Quantity sold") total_Qty_Sold,
SUM(inv_items."Total Amount") inv_ItemsSale,
(SUM(inv_items."Quantity sold") - SUM(cni."credit Quantity")) Quantity_Sold,
(SUM(inv_items."Total Amount") - SUM(cni."Credit Amount")) Credit_units
FROM "Invoice Items" inv_items
JOIN "Inventory Adjustment" IDR
ON IDR."EntityID" = inv_items."Invoice ID"
AND IDR."ItemID" = inv_items."Product ID"
AND IDR."Date" = inv_items."Invoice Date"
JOIN "Credit Notes" cn
ON IDR."EntityID" = cn."CreditNotes ID"
AND IDR."Entity" = 'CreditNote' --- filtering by only 'CreditNote'
JOIN "Credit Note Items" cni
ON cn."CreditNotes ID" = cni."CreditNotes ID"
GROUP BY to_char (inv_items."Invoice Date", 'MONTH'), inv_items."Product ID", inv_items."Item Name";
希望对你有所帮助)
我需要帮助来构建一个 ORACLE SQL 查询,该查询可以按项目名称提供每个月的销售额。 以下是查询中需要的列 - 日期(月份)、商品名称、销售数量、平均单价、净销售额、信用单位
已售出数量
of an Item 是当月特定商品扣除积分后的净售出数量;那是 =SUM(发票项目。售出数量)– SUM(信用票据项目。信用数量)
净销售额
特定月份的项目 = SUM(发票 Items.Total 金额)- SUM(信用票据项目。信用金额)
学分单位 : 指当月已入账的物品总数(credit Quantity)
下面是tables:
发票项目(发票日期、发票编号、产品编号、项目名称、销售数量、总金额)
库存调整(日期、实体、EntityID、ItemID、项目名称、数量、单价、库存量、净额) 此 table 在为该项目生成发票或贷方通知单时保存该项目的单价和数量。实体可以是 'Invoice' 或 'CreditNote'。 EntityID 是发票 ID 或 CreditNotes ID
信用票据(信用票据日期、信用票据 ID、客户 ID)
信用票据项目(CreditNotes ID、项目 ID、项目名称、信用数量、信用金额) 注意:这是信用票据 table 的行项目 table。 CreditNote Date 在 master table
中可用到目前为止,我有这个查询,但我无法确定下一步是加入贷方通知单和贷方通知单项目并获取净销售额和已售数量。
SELECT
inv_items."Invoice Date" inv_date,
inv_items."Product ID" inv_items_Prod_ID,
inv_items.Item Name,
AVG(IDR."Unit Price"),
SUM(inv_items."Quantity sold") total_Qty_Sold,
SUM(inv_items."Total Amount") inv_ItemsSale
FROM "Invoice Items" inv_items
JOIN "Inventory Adjustment" IDR ON IDR."EntityID" = inv_items."Invoice ID"
AND IDR."ItemID" = inv_items."Product ID"
AND IDR."Date" = inv_items."Invoice Date"
GROUP BY 1,
2,
3
非常感谢任何帮助。
从您的查询和描述看来,invoice_id、product_id 和日期 - 对于发票项目而言是唯一的。
所以你需要对信用票据做同样的事情 – (select cni.*, cn.CreditNote Date from Credit Notes cn, Credit Note Items cni where cni.CreditNotes ID = cn.CreditNotes ID)子 然后通过相同的 3 列将此子查询连接到 idr。
另外,你最好按 IDR.itemname、IDR.itemid 和 IDR.date
分组我根据你的问题要求编写了脚本,但是由于你的问题中的信息较少,比如列的数据类型和它们的结构,我不确定,你可以试试让我知道代码是否可以:
SELECT
to_char (inv_items."Invoice Date", 'MONTH') inv_month,
inv_items."Product ID" inv_items_Prod_ID,
inv_items."Item Name" inv_items_name,
AVG(IDR."Unit Price") avg_unit_price,
SUM(inv_items."Quantity sold") total_Qty_Sold,
SUM(inv_items."Total Amount") inv_ItemsSale,
(SUM(inv_items."Quantity sold") - SUM(cni."credit Quantity")) Quantity_Sold,
(SUM(inv_items."Total Amount") - SUM(cni."Credit Amount")) Credit_units
FROM "Invoice Items" inv_items
JOIN "Inventory Adjustment" IDR
ON IDR."EntityID" = inv_items."Invoice ID"
AND IDR."ItemID" = inv_items."Product ID"
AND IDR."Date" = inv_items."Invoice Date"
JOIN "Credit Notes" cn
ON IDR."EntityID" = cn."CreditNotes ID"
AND IDR."Entity" = 'CreditNote' --- filtering by only 'CreditNote'
JOIN "Credit Note Items" cni
ON cn."CreditNotes ID" = cni."CreditNotes ID"
GROUP BY to_char (inv_items."Invoice Date", 'MONTH'), inv_items."Product ID", inv_items."Item Name";
希望对你有所帮助)