【问题标题】:How can I filter based on Just One Record?如何仅基于一条记录进行过滤?
【发布时间】:2017-09-28 18:37:49
【问题描述】:

我正在尝试基于 2 个组件编写查询。我有两个名为“Plan_code”的字段和另一个名为“PolicyNum”的字段。我有多个“PolicyNum”记录,但它们将具有与之关联的唯一“Plan_code”。我想找到的是,如果“PolicyNum”重复项之一的“Plan_Code”为 1,则拉取所有 PolicyNum 重复项。当我编写以下查询时

SELECT PolicyNum
,Plan_Code

FROM [dbo].[IMS_IFCRP01_AA]

WHERE Plan_Code = '1'

我只会得到一个 PolicyNum 的 Plan_Code = 1 的记录。我需要 PolicyNum 的所有副本来进行分析。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • Gordon Linoffs 的回答不是您需要的吗?那么请说明它有什么问题。

标签: sql sql-server database where


【解决方案1】:

一种方法使用existsin

SELECT ia.*
FROM [dbo].[IMS_IFCRP01_AA] ia
WHERE ia.PolicyNum IN (SELECT ia2.PolicyNum 
                       FROM [dbo].[IMS_IFCRP01_AA] ia2
                       WHERE ia2.Plan_Code = '1'
                      );

【讨论】:

    【解决方案2】:

    如果您需要复制 PolicyNum。

    SELECT 
        PolicyNum
    FROM [dbo].[IMS_IFCRP01_AA]
    WHERE
       Plan_Code = '1' 
    GROUP BY 
        PolicyNum
    HAVING COUNT(*) > 1
    

    【讨论】:

    • 但他希望看到 Plan_Code = 1 的重复 PolicyNums,而不是所有记录。
    • 谢谢!这很接近,但我只需要我正在过滤的plan_code 的骗子。这些计划代码对于每个 PolicyNum 副本都是唯一的
    • 好吧,他忘记了 where 子句,但这并不意味着你不能发挥你的想象力。在我看来,他为您提供了问题的关键答案。
    • 但这不会让我得到我需要的东西。我理解他想要做什么,但并不是所有的记录都是重复的,只有 PolicyNum 的。不能做 COUNT(*) > 1
    • 您能否提供一些示例数据和预期结果?
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多