我有一个包含产品数据的表(JobLog)。我希望能够检查一些字段是否可能已经重新提交并输入了两次,但之前可能已经处理过。
我的代码如下:
SELECT A.ProductName, A.ProductCode, A.AmtHeld, A.Disposition
FROM
JobLog AS A
INNER JOIN (
SELECT ProductCode, AmtHeld
FROM JobLog GROUP BY ProductCode, AmtHeld
HAVING COUNT(*) > 1
) AS B
ON (A.ProductCode = B.ProductCode)
AND (A.AmtHeld = B.AmtHeld)
它输出:
|ProductName | AmtHeld | ProductCode | Disposition|
|------------|---------|-------------|------------|
| chocolate | 123 | 500 | P |
|------------|---------|-------------|------------|
| chocolate | 123 | 500 | C |
|------------|---------|-------------|------------|
| vanilla | 355 | A30 | C |
|------------|---------|-------------|------------|
| vanilla | 355 | A30 | C |
|------------|---------|-------------|------------|
有没有其他方法可以设置一个附加参数,使它只输出Disposition=P作为行的一部分的行?我只想要两种巧克力产品的产量,因为其中一种含有P,而不是两种香草,因为它们都含有C(没有P)。
|ProductName | AmtHeld | ProductCode | Disposition|
|------------|---------|-------------|------------|
| chocolate | 123 | 500 | P |
|------------|---------|-------------|------------|
| chocolate | 123 | 500 | C |
|------------|---------|-------------|------------|
提前谢谢!
最佳答案
您可以将条件放在HAVING
子句中:
SELECT A.ProductName, A.ProductCode, A.AmtHeld, A.Disposition
FROM JobLog AS A INNER JOIN
(SELECT ProductCode, AmtHeld
FROM JobLog
GROUP BY ProductCode, AmtHeld
HAVING COUNT(*) > 1 AND
SUM(IIF(DISPOSITION = 'P', 1, 0)) > 0
) AS B
ON A.ProductCode = B.ProductCode AND
A.AmtHeld = B.AmtHeld
关于mysql - SQL选择具有特定值的重复行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54660833/