Sql 查询与 return 存在于一个 table 中且不存在于另一个 table 中的零件号与其他字段数据
Sql query with join to return a part number that exists in one table and does not exist in another table with other field data
我正在尝试 return 来自一个 table A 的数据,但 table B 中不存在某些数据。例如:
Table A No_ Inventory Posting Group
1 PAR
2 NEW
3 PAR
4 PAR
Table B No_ Table ID Dimension Code
1 27 Branch
2 27 Manufacturer
3 27 Department
3 27 Branch
5 27 Department
table A 中存在每个 No_ 零件。Table B 需要在单独的行中同时包含 "Branch" 和 "Department"。有些部分在 Table B 中有一个或另一个或两个。我正在尝试 return 结果显示 table A 中列出的每个部分哪些不存在 "Branch" 和 "Department" in table B. 它可能是两个单独的查询。这是我现在拥有的,但我没有得到我想要的。
select dd.[No_], dd.[Table ID], dd.[Dimension Code], dd.[Dimension Value Code], dd.[Value Posting], dd.[Multi Selection Action]
from [Item] i left outer join [Default Dimension] dd
on i.[No_] = dd.[No_]
where dd.[Dimension Code] not in ('BRANCH', 'DEPARTMENT')
and i.[Inventory Posting Group] = 'PAR'
and dd.[Table ID] = 27
试试这个:
SELECT dd.[No_]
FROM [Item] i
LEFT OUTER JOIN [Default Dimension] dd ON i.[No_] = dd.[No_]
WHERE i.[Inventory Posting Group] = 'PAR'
AND dd.[No_] IS NULL
想法是,当您左连接 table 时,右侧 table 缺失的匹配记录将具有 NULL
个值。
EDIT 要获取没有特定 Dimension Code
的记录,您需要加入具有维度列表的 table .如果你没有这样的 table,你可以在子查询中创建一个假的:
SELECT i.[No_], d.Dimension AS Missing_Dimension
FROM [Item] i
CROSS JOIN (SELECT 'DEPARTMENT' AS Dimension
UNION
SELECT 'BRANCH' AS Dimension) AS d
LEFT OUTER JOIN [Default Dimension] dd ON i.[No_] = dd.[No_]
AND dd.[Dimension Code] = d.Dimension
WHERE i.[Inventory Posting Group] = 'PAR'
AND dd.[No_] IS NULL
ORDER BY i.[No_]
这里是fiddle.
我正在尝试 return 来自一个 table A 的数据,但 table B 中不存在某些数据。例如:
Table A No_ Inventory Posting Group
1 PAR
2 NEW
3 PAR
4 PAR
Table B No_ Table ID Dimension Code
1 27 Branch
2 27 Manufacturer
3 27 Department
3 27 Branch
5 27 Department
table A 中存在每个 No_ 零件。Table B 需要在单独的行中同时包含 "Branch" 和 "Department"。有些部分在 Table B 中有一个或另一个或两个。我正在尝试 return 结果显示 table A 中列出的每个部分哪些不存在 "Branch" 和 "Department" in table B. 它可能是两个单独的查询。这是我现在拥有的,但我没有得到我想要的。
select dd.[No_], dd.[Table ID], dd.[Dimension Code], dd.[Dimension Value Code], dd.[Value Posting], dd.[Multi Selection Action]
from [Item] i left outer join [Default Dimension] dd
on i.[No_] = dd.[No_]
where dd.[Dimension Code] not in ('BRANCH', 'DEPARTMENT')
and i.[Inventory Posting Group] = 'PAR'
and dd.[Table ID] = 27
试试这个:
SELECT dd.[No_]
FROM [Item] i
LEFT OUTER JOIN [Default Dimension] dd ON i.[No_] = dd.[No_]
WHERE i.[Inventory Posting Group] = 'PAR'
AND dd.[No_] IS NULL
想法是,当您左连接 table 时,右侧 table 缺失的匹配记录将具有 NULL
个值。
EDIT 要获取没有特定 Dimension Code
的记录,您需要加入具有维度列表的 table .如果你没有这样的 table,你可以在子查询中创建一个假的:
SELECT i.[No_], d.Dimension AS Missing_Dimension
FROM [Item] i
CROSS JOIN (SELECT 'DEPARTMENT' AS Dimension
UNION
SELECT 'BRANCH' AS Dimension) AS d
LEFT OUTER JOIN [Default Dimension] dd ON i.[No_] = dd.[No_]
AND dd.[Dimension Code] = d.Dimension
WHERE i.[Inventory Posting Group] = 'PAR'
AND dd.[No_] IS NULL
ORDER BY i.[No_]
这里是fiddle.