ERP复杂查询建议

Complex query suggestion for ERP

我是 SQL 的新手。虽然,我可以编写基本的连接,但我的经理要求我提供一份符合以下要求的报告。

他想查找存在相同项目但包装不同的所有发票..

从table结构的角度来看:

TBL_ITEM (Table)
ITEM_ID (PK)
ITEM_NAME

TBL_PACKING (Table)
PACKING_ID (PK)
PACKING

TBL_INVOICE(Table)
INVOICE_ID (PK)
ITEM_ID (FK)
PACKING_ID (FK)

PS:我删除了不需要的列..

现在基于上面的table结构,这是场景。

1) 买家 A 在一张发票中购买了两件不同的商品,但包装相同 - 这不应该包含在清单中,因为商品不同

2) 买家 B 在同一张发票中两次购买了相同包装的一件商品 - 需要此清单

3) 买家 C 购买了一件具有两种不同包装的商品 - 需要此清单

请考虑所有情况都适用于发票,因此分组应首先在发票级别,然后在项目级别...详细说明:

买家 D 用三张不同的发票购买了三次商品

Invoice 1: Item A; packing 1kg
Invoice 2: Item B; packing 2kg
Invoice 3: Item A; packing 1kg; Item B; 2kg

对于买家 D 的情况,它应该出现在报告中,因为每张发票都没有相同或不同包装的项目组合..

我试过分组和游标,但我想这不是正确的方法。想知道这是否可以通过查询来实现,如果有人可以提供帮助那就太好了。

我正在使用 MS SQL 2005

这很简单。您可以获得项目清单:

select i.invoice_id, i.item_id
from tbl_invoice i
group by i.invoice_id, i.item_id
having min(i.packing_id) <> max(i.packing_id);

这为您提供了满足您问题的 invoice/item 对列表。