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每条记录与 ProdKeywords
和 DATE 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 保存的查询。如果需要,您可以稍后再做。但我希望这种堆叠查询方法一开始会更容易管理。
我试图在 [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每条记录与 ProdKeywords
和 DATE 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 保存的查询。如果需要,您可以稍后再做。但我希望这种堆叠查询方法一开始会更容易管理。