SQL 查找单个表中丢失的记录

问题描述 投票:0回答:1

我正在使用 Oracle SQL,我需要确保我的所有项目恰好位于 5 个特定位置。我面临的问题是我的物品仅位于 5 个位置中的少数几个,我需要找到我需要的丢失物品。

问题是数据库表有很多位置,但我只需要查找在 5 个特定位置中的任何一个中缺少该项目的记录,这 5 个特定位置是 Loc1、Loc2、Loc3、Loc4、Loc5

我使用的查询是:

        WITH Sku (Loc) AS (SELECT 'loc1' FROM DUAL UNION ALL     
SELECT 'loc2' FROM DUAL UNION ALL    
SELECT 'loc3' FROM DUAL UNION ALL     
SELECT 'loc4' FROM DUAL UNION ALL     
SELECT 'loc5' FROM DUAL)     
SELECT t.Item, l.Loc FROM Sku l     
LEFT OUTER JOIN Sku t PARTITION BY (t.Item) ON (l.Loc = t.Loc)     
WHERE t.Sku is NULL; 

但我收到错误 - 缺少关键字

以下是我基于数据库想要实现的目标。感谢您的任何建议。

sql oracle-sqldeveloper
1个回答
0
投票

您正在从

Sku
中选择两次。更改查询以从包含您的数据的数据库中的表中进行选择。

WITH Sku (Loc) AS (
  SELECT 'loc1' FROM DUAL UNION ALL     
  SELECT 'loc2' FROM DUAL UNION ALL    
  SELECT 'loc3' FROM DUAL UNION ALL     
  SELECT 'loc4' FROM DUAL UNION ALL     
  SELECT 'loc5' FROM DUAL
)
SELECT t.Item, l.Loc
FROM   Sku l     
       LEFT OUTER JOIN table_name t
       PARTITION BY (t.Item)
       ON (l.Loc = t.Loc)     
WHERE  t.Sku is NULL;
© www.soinside.com 2019 - 2024. All rights reserved.