【问题标题】:Deleting rows in sql rows based on pair value根据对值删除sql行中的行
【发布时间】:2023-03-17 09:33:01
【问题描述】:

我有如下 SQL 测试表:

Item Doc_No Code Line_Item
1 abc1234 101 01
2 abc1234 102 01
3 def5678 101 01
4 def5678 102 01
5 ghi1234 101 01
6 ghi1234 101 02
7 jkl5678 101 01

“Doc_No” 的重复值在 “代码” 列中具有“101”和“102”对值时,我正在尝试消除行,例如 abc1234 和 def5678 .

同时我想保持 "Doc_No" 的重复值,而 "Code" 列中没有 "101" 和 "102" 的对值,例如吉1234。最终输出如下:

Item Doc_No Code Line_item
5 ghi1234 101 01
6 ghi1234 101 02
7 jkl5678 101 01

我试图获取具有重复值的行并排除它们,但这会错误地排除“ghi1234”而不是我想要的最终输出表。

    SELECT 
    a.*,
    b.Count_Item
    FROM dbo.test AS a
    LEFT JOIN 
       (SELECT Doc_No, COUNT(*) AS Count_Item
        FROM dbo.test
        GROUP BY Doc_No
        HAVING COUNT(*) > 1) AS b
    ON a.Doc_No = b.Doc_No
    WHERE b.Count_Item < 2
Item Doc_No Code Line_Item Count_Item
7 jkl5678 101 01 1

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您对下面的查询有何看法? select doc_no from test group by doc_no having count(distinct code) &gt; 1;

标签: sql duplicates


【解决方案1】:

建立在您的构造之上:

SELECT a.*
FROM dbo.test a LEFT JOIN
     (SELECT Doc_No, COUNT(*) AS Count_Item
      FROM dbo.test
      WHERE code IN (101, 102)
      GROUP BY Doc_No
     ) b
     ON a.Doc_No = b.Doc_No
WHERE b.Count_Item < 2 OR Count_Item IS NULL;

注意:这里假设文档的代码不重复。

【讨论】:

  • 嗨,这项工作很有魅力。我可以知道您所说的“假设文档没有重复代码”是什么意思吗?能举出具体的例子吗?
  • @rain123 。 . .如果同一文档出现两次 101。
【解决方案2】:

this呢:

select *
from test
group by Doc_No, Line_Item
having count(*) = 1

this:

select *
from test
where Doc_No not in (
  select Doc_No
  from test
  join test as test2 using (Doc_No)
  where test.Code = 101 and test2.Code = 102
);

【讨论】:

  • 我认为 * 不能使用,因为并非所有列都是 group by 的一部分。此外,此查询将包括 ghi1234 记录。 @rain123 想保留它。 @rain123 似乎只有具有相同 doc_no 多个 line_items 的问题。
  • 我发布的查询产生了“最终输出如下”(至少对于 MySQL)。我错过了什么?
  • 嗨@AllanWind,我用真实数据集尝试了你的方法,我有超过 20 列,但没有用。我能想到的最好的方法是在 Code 列中找到具有 101 和 102 对值的列 Doc_No 值,然后删除/排除这些行。
  • 为什么不起作用?我添加了另一个查询,它提供了与提供的测试数据相同的结果。
猜你喜欢
  • 2015-03-28
  • 2022-08-19
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 2015-11-14
相关资源
最近更新 更多