Db2 为什么我的子选择不起作用?

Db2 为什么我的子选择不起作用?,db2,subquery,Db2,Subquery,我有这个查询,我想得到所有的记录都有ER和OM、MT或NM货币类型,但这个查询只返回了我的子选择中的ER和Disorganized。记录键是SSN、PLAN、MONEY\u TYPE\u CD,所以我想要所有具有ER和OM、MT或NM的SSN。希望这更清楚。感谢您的帮助 SELECT A.SSN, A.MONEY_TYPE_CD, A.PLAN_TYPE, A.ER_NUM FROM FUND_DTL A

我有这个查询,我想得到所有的记录都有ER和OM、MT或NM货币类型,但这个查询只返回了我的子选择中的ER和Disorganized。记录键是SSN、PLAN、MONEY\u TYPE\u CD,所以我想要所有具有ER和OM、MT或NM的SSN。希望这更清楚。感谢您的帮助

SELECT A.SSN, A.MONEY_TYPE_CD, A.PLAN_TYPE, A.ER_NUM
FROM FUND_DTL A                                                    
WHERE A.MONEY_TYPE_CD = 'ER'                             
  AND A.SSN IN (
      SELECT SSN                                
      FROM FUND_DTL                             
      WHERE MONEY_TYPE_CD IN ('OM', 'MT', 'NM')
  )              
WITH UR;                                                
其中A.MONEY\u TYPE\u CD='ER'将结果集限制为仅使用'ER'代码

你想要更像这样的东西

SELECT A.SSN, A.MONEY_TYPE_CD, A.PLAN_TYPE, A.ER_NUM 
FROM FUND_DTL A
WHERE A.SSN IN (SELECT SSN
                FROM FUND_DTL
                WHERE MONEY_TYPE_CD IN ('OM', 'MT', 'NM'))
  AND A.SSN IN (SELECT SSN
                FROM FUND_DTL
                WHERE MONEY_TYPE_CD = 'ER')
WITH UR;
使用INTERSECT的另一个版本

SELECT A.SSN, A.MONEY_TYPE_CD, A.PLAN_TYPE, A.ER_NUM 
FROM FUND_DTL A
WHERE A.SSN IN (SELECT SSN
                FROM FUND_DTL
                WHERE MONEY_TYPE_CD IN ('OM', 'MT', 'NM')
                INTERSECT  
                SELECT SSN
                FROM FUND_DTL
                WHERE MONEY_TYPE_CD = 'ER')
WITH UR;

他们都说,给我任何一条SSN同时出现在带有“ER”的SSN集合和带有“OM”、“MT”、“NM”的SSN集合中的记录。

一条记录怎么能同时具有“ER”和非“ER”货币价值?您可能需要重新陈述您的问题。@Mustacio,根据问题,钱是钥匙的一部分。。谢谢!现在我的问题是如何向子选择中添加另一列,如计划类型?这实际上是我的问题。谢谢!哪里有可乐,可乐在选择可乐,可乐来自…谢谢。我终于在网上找到了一些东西