【发布时间】:2018-02-15 13:24:49
【问题描述】:
早上好,
我正在尝试完成一些超出我专业水平的事情。感谢这个网站上的一些人,我的 Oracle-SQL 技能大大提高了,但我想尝试一些新的东西。
我有四个表 - 一个采购订单表、一个产品供应商表、一个缺陷表和一个零件表。
我的公司有三个“部门”(拆除 (A)、混凝土 (B) 和建筑 (C))。我想查看针对特定部门购买的零件的所有缺陷。我在下面有一个工作查询。我的问题是,有时我们有多个 PO 用于同一部分 - 有时我们会出于任何原因更换供应商(即在物流团队中,而不是我;))所以我最终会得到如下所示的东西:
请注意,有两行,不同的供应商,但其他一切都相同。我只想要最近购买的部分。我正在过滤一个采购订单日期。这是查询:
WITH
PartNums AS -- Grabs me all of the stuff we "bought", and its vendor, in the construction division since Jan 1 2018
(
SELECT
PO_ITEM AS "PART_NUM",
VEND_NUM,
VEND_NM,
PODiv AS "DIVISION_CD"
FROM
tblPurchases
INNER JOIN tblVendors ON tblPurchased.VEND_NUM = tblVendors.VEND_NUM
WHERE
PODate >= '01-Jan-2018'
AND
PODiv = 'C'
),
Defects AS -- Grabs me the listed defects against their stuff
(
SELECT
PartNums.*,
DEFECT_NUM,
DEFECT_CAT
FROM
PartNums
INNER JOIN tblDefects ON PartNums.PART_NUM = tblDefects.DEFECTIVE_PART_NUM
),
Names AS -- Grabs me the name of the part we are buying
(
SELECT
Defects.*,
PART_NM
FROM
Defects
INNER JOIN tblParts ON Defects.PART_NUM = tblParts.PART_NUM
)
SELECT
VEND_NUM,
VEND_NM,
PART_NUM,
PART_NM,
DEFECT_NUM,
DEFECT_CAT,
DIVISION_CD
FROM Names
基本上,我想做的是,如果有多个供应商提供单个零件编号,只需获取最新的...有人知道该怎么做吗?我尝试了 SELECT DISTINCT 但它没有任何区别...... :(
任何帮助将不胜感激。
【问题讨论】: