SQL 计算具有子句的多个列

SQL Count multiple Columns Having Clause

我试图在 [MFG #][CM HT][CM WT]CBM 列中查找重复记录,同时仍然看到其他一些名为 [=17] 的列=](不在此 SQL 语句中)和 DateCode。但是我坚持使用 GROUP BY 子句。 MS Access 要求我输入我在 SELECT 语句中输入的所有列。我还尝试在 HAVING 语句中放入每一列。

 SELECT First(tblDat01Prod.[DATE CODE]) AS FirstOfDateCode, tblDat01Prod.[MFG #], tblDat01Prod.[CM HT], tblDat01Prod.[CM WDT], tblDat01Prod.[CM DPT], tblDat01Prod.CBM INTO temp_Delete
 FROM tblDat01Prod
 GROUP BY tblDat01Prod.[MFG #], tblDat01Prod.[CM HT], tblDat01Prod.[CM WDT], tblDat01Prod.[CM DPT], tblDat01Prod.CBM
 HAVING (((Count(*))>1));

重复记录在“[MFG #]”“[CM HT]”“[CM WDT]”和“[CM DPT]”中,我也希望return每条记录与 ProdKeywordsDATE CODE

重复

我想查询看起来像这样

 SELECT tblDat01Prod.[DATE CODE], tblDat01Prod.[MFG #], tblDat01Prod.[CM HT], tblDat01Prod.[CM WDT], tblDat01Prod.[CM DPT], tblDat01Prod.CBM, tblDat01Prod.[ProdKeywords]
 FROM tblDat01Prod
 GROUP BY tblDat01Prod.[MFG #], tblDat01Prod.[CM HT], tblDat01Prod.[CM WDT], tblDat01Prod.[CM DPT], tblDat01Prod.CBM
 HAVING (((Count(*))>1)) -----Except for prodkeywords and DATE CODE;

如果我对你的情况理解正确,这个查询将显示 MFG #CM HT、[=18= 的每个组合]CM WDT, CM DPT, 和 CBM 包含在多个记录中...

SELECT
    t.[MFG #],
    t.[CM HT],
    t.[CM WDT],
    t.[CM DPT],
    t.CBM
FROM tblDat01Prod AS t
GROUP BY
    t.[MFG #],
    t.[CM HT],
    t.[CM WDT],
    t.[CM DPT],
    t.CBM
HAVING Count(*)>1;

如果这是正确的,剩下的问题是您想要查看包含这些重复值的源记录,请将该查询保存为 qryDupValues。然后创建一个新查询,将您的 tblDat01Prod table 连接到 qryDupValues.

SELECT
    t.[MFG #],
    t.[CM HT],
    t.[CM WDT],
    t.[CM DPT],
    t.CBM,
    t.ProdKeywords,
    t.[DATE CODE]
FROM
    tblDat01Prod AS t
    INNER JOIN qryDupValues AS q
    ON
            t.[MFG #] = q.[MFG #]
        AND t.[CM HT] = q.[CM HT]
        AND t.[CM WDT] = q.[CM WDT]
        AND t.[CM DPT] = q.[CM DPT]
        AND t.CBM = q.[CBM];

或者,您可以使用子查询代替单独的 qryDupValues 保存的查询。如果需要,您可以稍后再做。但我希望这种堆叠查询方法一开始会更容易管理。