繁体   English   中英

根据多个条件返回不明显的行SQL,MS Access

[英]Returning non-distinct rows based on multiple criteria SQL, MS Access

我有一个名为MASTER的表,该表是从另一个来源导入的。 它包含以下字段:字段A,字段B,字段C,字段D,字段E,字段F,字段G,字段H,字段I,字段J和字段K

我正在尝试设计一个查询,该查询将返回每个实例(首先是FIELD D NOT DISTINCT)。 我希望出现的所有记录均不止一次返回。 然后从那里开始,在那个集合中,我想返回所有对于每个不同的FIELD D记录都有多个FIELD I结果的地方。

FIELD D本质上是一个数字公钥。 FIELD I是数字状态代码。 目标是在一个公钥上附有两个状态代码的情况下进行扫描。

以下是我迄今为止的最佳尝试。 它确实返回了我想要的集合,但是还返回了一些其他的公共密钥。 谁能指出我正确的方向?

SELECT DISTINCT PREP1.FIELD_D, PREP1.FIELD_I
FROM (SELECT [MASTER].FIELD_D AS FIELD_D, [MASTER].FIELD_I AS FIELD_I
    FROM [MASTER] GROUP BY [MASTER].FIELD_D, [MASTER].FIELD_I) AS
         PREP1 
INNER JOIN (SELECT [MASTER].FIELD_D AS FIELD_D, [MASTER].FIELD_I AS
              FIELD_I
            FROM [MASTER]
            GROUP BY [MASTER].FIELD_D, [MASTER].FIELD_I
            HAVING COUNT(*) > 1)  AS PREP2 ON PREP1.FIELD_D = 
                                     PREP2.FIELD_D
GROUP BY PREP1.FIELD_D, PREP1.FIELD_I

编辑:我鞭打了这个小例子。 A和B列代表我将拥有的数据类型。 C列列出了我要返回的内容。 您会注意到,在A列中有一个重复的示例,但是在B列中它们的相关值是相同的,因此我不需要这些。

 <html> <head> <style> table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; } tr:nth-child(even) { background-color: #dddddd; } </style> <body><table><tr><th>COLUMN A</th><th>COLUMN B</th><th>COLUMN C</th></tr><tr><td>00000000</td><td>0</td><td>""</td></tr><tr><td>00000000</td><td>0</td><td>""</td></tr><tr><td>00000001</td><td>1</td><td>""</td></tr><tr><td>00000002</td><td>1</td><td>RETURN</td></tr><tr><td>00000002</td><td>2</td><td>RETURN</td></tr><tr><td>00000003</td><td>1</td><td>""</td></tr><tr><td>00000004</td><td>1</td><td>""</td></tr><tr><td>00000004</td><td>1</td><td>""</td></tr><tr><td>00000005</td><td>3</td><td>""</td></tr><tr><td>00000006</td><td>3</td><td>""</td></tr><tr><td>00000007</td><td>0</td><td>""</td></tr><tr><td>00000008</td><td>0</td><td>""</td></tr><tr><td>00000009</td><td>1</td><td>RETURN</td></tr><tr><td>00000009</td><td>2</td><td>RETURN</td></tr><tr><td>00000010</td><td>0</td><td>""</td></tr></table></body></html> 

这就是最终的工作。 希望这是有道理的。

SELECT MASTER.FIELDA, MASTER.FIELDB, MASTER.FIELDC, MASTER.FIELDD, MASTER.FIELDF
FROM (
[MASTER] AS MASTER 
INNER JOIN (
    SELECT PREP1.FIELDD, COUNT(PREP1.FIELDD) AS [COUNT] 
    FROM (
        SELECT FIELDD, FIELDF 
        FROM [MASTER] 
        INNER JOIN FILTER ON [MASTER].FIELDB =
             FILTER.FIELDB 
        GROUP BY FIELDD, FIELDF) AS PREP1 
    )  GROUP BY FIELDD ) AS PREP2 ON MASTER.FIELDD = PREP2.FIELDD
INNER JOIN FILTER ON MASTER.FIELDB = tblSAClients.FundSponsor
WHERE (((PREP2.COUNT)>1))
ORDER BY MASTER.FIELDD DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM